text:
local ipairs, pairs, next, pcall, select = ipairs, pairs, next, pcall, select
local string, math, table = string, math, table
-- lib apis caching
local X = MY
local UI, GLOBAL, CONSTANT, wstring, lodash = X.UI, X.GLOBAL, X.CONSTANT, X.wstring, X.lodash
-------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------
-- ʱÖÓº¯Êý¹ÜÀíÖÐÐÄ
---------------------------------------------------------------------
-- º¯Êý        Ãû³Æ        Óô¦         ʱ¼äµ¥Î»    ×îСʱ¼ä¾«¶È(ms)
-- DelayCall   ÑÓ³Ùµ÷Óà   µ¹¼Æʱ         ºÁÃë       1 / GLOBAL.GAME_FPS
-- BreatheCall ºôÎüµ÷Óà   ÿ֡µ÷Óà       ºÁÃë       1 / GLOBAL.GAME_FPS
-- FrameCall   °´Ö¡µ÷Óà   ÿ֡µ÷Óà       ºôÎüÖ¡     1 / GLOBAL.GAME_FPS
-- RenderCall  äÖȾµ÷Óà   ÿ´ÎäÖȾµ÷Óà   ºÁÃë       1 / ÿÃëäÖȾ´ÎÊý
-- Debounce    µ÷Ó÷À¶¶   ÑÓ³Ùµ÷ÓÃÒ»´Î   ºÁÃë       1 / GLOBAL.GAME_FPS
-- Throttle    µ÷ÓýÚÁ÷   ·Ö¶ÎƵÂÊÏÞÖÆ   ºÁÃë       1 / GLOBAL.GAME_FPS
-- FinallyThrottle È·±£ÑÓ³Ùµ÷ÓõĽÚÁ÷    ºÁÃë       1 / GLOBAL.GAME_FPS
---------------------------------------------------------------------
if DelayCall and BreatheCall and FrameCall and RenderCall then
	local NS_PREFIX = X.NSFormatString('{$NS}__')
	local function WrapIntervalCall(szIntervalName, IntervalCall)
		return function(szKey, nInterval, fnAction, oArg)
			local bUnreg
			if type(szKey) == 'function' then
				-- DelayCall(fnAction[, oArg])
				szKey, nInterval, fnAction, oArg = nil, 0, szKey, nInterval
			elseif type(szKey) == 'number' then
				-- DelayCall(nInterval, fnAction[, oArg])
				szKey, nInterval, fnAction, oArg = nil, szKey, nInterval, fnAction
			elseif type(nInterval) == 'function' then
				-- DelayCall(szKey, fnAction[, oArg])
				nInterval, fnAction, oArg = 0, nInterval, fnAction
			elseif type(nInterval) == 'boolean' then
				-- DelayCall(szKey, false)
				nInterval, bUnreg = nil, true
			elseif nInterval and type(fnAction) ~= 'function' then
				-- DelayCall(szKey, nInterval)
				fnAction = nil
			end
			if fnAction then -- reg
				--[[#DEBUG BEGIN]]
				local f = fnAction
				local function GetXpCallReturnVal(res, ...)
					if res then
						return ...
					end
					local xpErrMsg, xpTraceback = ...
					local xpErrLog = szIntervalName .. ' failed: '
						.. tostring(xpErrMsg or '') .. '\n' .. tostring(xpTraceback or '')
					Log(xpErrLog)
					FireUIEvent('CALL_LUA_ERROR', xpErrLog .. '\n')
				end
				fnAction = function(...)
					return GetXpCallReturnVal(X.XpCall(f, ...))
				end
				--[[#DEBUG END]]
				if not szKey then -- ÄäÃûµ÷ÓÃ
					szKey = GetTickCount()
					while IntervalCall(NS_PREFIX .. tostring(szKey)) do
						szKey = szKey + 0.1
					end
					szKey = tostring(szKey)
				end
			end
			assert(X.IsString(szKey), 'IntervalCall Key MUST be string.')
			local szNSKey = NS_PREFIX .. szKey
			local aRetVal = bUnreg
				and {IntervalCall(szNSKey, false)}
				or {IntervalCall(szNSKey, nInterval, fnAction, oArg)}
			if X.IsString(aRetVal[1]) then
				aRetVal[1] = szKey
			end
			return unpack(aRetVal)
		end
	end
	X.DelayCall   = WrapIntervalCall('DelayCall'  , DelayCall  )
	X.BreatheCall = WrapIntervalCall('BreatheCall', BreatheCall)
	X.FrameCall   = WrapIntervalCall('FrameCall'  , FrameCall  )
	X.RenderCall  = WrapIntervalCall('RenderCall' , RenderCall )
else

local _time      -- current time
local _count = 0 -- the count of onactive
local _no_active

local function LuaActive_Enable(bEnable)
	_no_active = not bEnable
end

--================================= breathe call ================================================
-- DelayCall(szKey, nInterval, fnAction, oArg)
-- DelayCall('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄDelayCallµÄÐÅÏ¢
-- DelayCall('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄDelayCall
-- DelayCall('CASTING', function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ×îСֵµÄDelayCall
-- DelayCall('CASTING', 100, function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ100µÄDelayCall
-- DelayCall('CASTING', 200) -- °ÑÃû³ÆΪCASTINGµÄDelayCallµ÷ÓÃʱ¼ä¸ÄΪ200ºÁÃë
--===============================================================================================
local _tDelayCall = {} -- bc±í ¼üÖµ¶Ô¼¯ºÏ
local _delaycalls = {} -- a mirror table to avoid error: invalid key to 'next'
local _delaycall_t   -- Ñ»·Ê¹ÓÃbc±í ¼õÉÙƵ·±×¢²á·´×¢²áʱн¨±íµÄ¿ªÏú

local function onDelayCall()
	_time = GetTime()
	-- create mirror
	for szKey, dc in pairs(_tDelayCall) do
		_delaycalls[szKey] = dc
	end
	-- traverse dc calls
	for szKey, dc in pairs(_delaycalls) do
		if dc.nNext <= _time then
			local res, err, trace = X.XpCall(dc.fnAction, dc.oArg)
			if not res then
				X.ErrorLog(err, 'onDelayCall: ' .. szKey, trace)
			end
			_count = _count - 1
			_delaycall_t = _tDelayCall[szKey]
			_tDelayCall[szKey] = nil
			if _count == 0 then
				LuaActive_Enable(false)
			end
		end
		_delaycalls[szKey] = nil
	end
end

function X.DelayCall(szKey, nInterval, fnAction, oArg)
	local bUnreg
	if type(szKey) == 'function' then
		-- DelayCall(fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, 0, szKey, nInterval
	elseif type(szKey) == 'number' then
		-- DelayCall(nInterval, fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, szKey, nInterval, fnAction
	elseif type(nInterval) == 'function' then
		-- DelayCall(szKey, fnAction[, oArg])
		nInterval, fnAction, oArg = 0, nInterval, fnAction
	elseif type(nInterval) == 'boolean' then
		-- DelayCall(szKey, false)
		nInterval, bUnreg = nil, true
	elseif nInterval and type(fnAction) ~= 'function' then
		-- DelayCall(szKey, nInterval)
		fnAction = nil
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûbcµ÷ÓÃ
			szKey = GetTickCount()
			while _tDelayCall[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		if not _tDelayCall[szKey] then
			_tDelayCall[szKey] = _delaycall_t or {}
			_delaycall_t = nil
			_count = _count + 1
			LuaActive_Enable(true)
		end
		local dc = _tDelayCall[szKey]
		dc.fnAction = fnAction
		dc.oArg = oArg
		dc.nNext = GetTime() + nInterval
		dc.nInterval = nInterval or 0
	elseif nInterval then -- modify
		local dc = _tDelayCall[szKey]
		if dc then
			dc.nInterval = nInterval
			dc.nNext = GetTime() + nInterval
		end
	elseif szKey and bUnreg then -- unreg
		if _tDelayCall[szKey] then
			_count = _count - 1
			_delaycall_t = _tDelayCall[szKey]
			_tDelayCall[szKey] = nil
			if _count == 0 then
				LuaActive_Enable(false)
			end
		end
	elseif szKey then -- get registered breathecall info
		local dc = _tDelayCall[szKey]
		if dc then
			return szKey, dc.nInterval, dc.nNext - GetTime()
		end
		return
	end
	return szKey
end

--================================= breathe call ================================================
-- BreatheCall(szKey, nInterval, fnAction, oArg)
-- BreatheCall('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄBreatheCallµÄÐÅÏ¢
-- BreatheCall('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄBreatheCall
-- BreatheCall('CASTING', function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ×îСֵµÄBreatheCall
-- BreatheCall('CASTING', 100, function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ100µÄBreatheCall
-- BreatheCall('CASTING', 200) -- °ÑÃû³ÆΪCASTINGµÄBreatheCallµ÷Óüä¸ô¸ÄΪ200ºÁÃë
-- BreatheCall('CASTING', 200, true) -- °ÑÃû³ÆΪCASTINGµÄBreatheCallÏ´ε÷ÓÃÑÓ³Ù¸ÄΪ200ºÁÃë
-- ×¢£ºfnAction·µ»Ø0±íʾ´ÓBreatheCallÖÐÒƳý×Ô¼º
--===============================================================================================
local _tBreatheCall = {} -- bc±í ¼üÖµ¶Ô¼¯ºÏ
local _breathecalls = {} -- a mirror table to avoid error: invalid key to 'next'
local _breathecall_t   -- Ñ»·Ê¹ÓÃbc±í ¼õÉÙƵ·±×¢²á·´×¢²áʱн¨±íµÄ¿ªÏú

local function onBreatheCall()
	_time = GetTime()
	-- create mirror
	for szKey, bc in pairs(_tBreatheCall) do
		_breathecalls[szKey] = bc
	end
	-- traverse bc calls
	for szKey, bc in pairs(_breathecalls) do
		if bc.nNext <= _time then
			bc.nNext = _time + bc.nInterval
			local res, err, trace = X.XpCall(bc.fnAction, bc.oArg)
			if not res then
				X.ErrorLog(err, 'onBreatheCall: ' .. szKey, trace)
			elseif err == 0 then
				_count = _count - 1
				_breathecall_t = _tBreatheCall[szKey]
				_tBreatheCall[szKey] = nil
				if _count == 0 then
					LuaActive_Enable(false)
				end
			end
		end
		_breathecalls[szKey] = nil
	end
end

function X.BreatheCall(szKey, nInterval, fnAction, oArg)
	local bOnce, bUnreg
	if type(szKey) == 'function' then
		-- BreatheCall(fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, 0, szKey, nInterval
	elseif type(szKey) == 'number' then
		-- BreatheCall(nInterval, fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, szKey, nInterval, fnAction
	elseif type(nInterval) == 'function' then
		-- BreatheCall(szKey, fnAction[, oArg])
		nInterval, fnAction, oArg = 0, nInterval, fnAction
	elseif type(nInterval) == 'boolean' then
		-- BreatheCall(szKey, false)
		nInterval, bUnreg = nil, true
	elseif nInterval and type(fnAction) ~= 'function' then
		-- BreatheCall(szKey, nInterval, bOnce)
		fnAction, bOnce = nil, fnAction
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûbcµ÷ÓÃ
			szKey = GetTickCount()
			while _tBreatheCall[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		if not _tBreatheCall[szKey] then
			_tBreatheCall[szKey] = _breathecall_t or {}
			_breathecall_t = nil
			_count = _count + 1
			LuaActive_Enable(true)
		end
		local bc = _tBreatheCall[szKey]
		bc.fnAction = fnAction
		bc.oArg = oArg
		bc.nNext = GetTime()
		bc.nInterval = nInterval or 0
	elseif nInterval then -- modify
		local bc = _tBreatheCall[szKey]
		if bc then
			if not bOnce then
				bc.nInterval = nInterval
			end
			bc.nNext = GetTime() + nInterval
		end
	elseif szKey and bUnreg then -- unreg
		if _tBreatheCall[szKey] then
			_count = _count - 1
			_breathecall_t = _tBreatheCall[szKey]
			_tBreatheCall[szKey] = nil
			if _count == 0 then
				LuaActive_Enable(false)
			end
		end
	elseif szKey then -- get registered breathecall info
		local bc = _tBreatheCall[szKey]
		if bc then
			return szKey, bc.nInterval, bc.nNext - GetTime()
		end
		return
	end
	return szKey
end

--================================= frame call ==================================================
-- FrameCall(szKey, nInterval, fnAction, oArg)
-- FrameCall('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄFrameCallµÄÐÅÏ¢
-- FrameCall('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄFrameCall
-- FrameCall('CASTING', function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ×îСֵµÄFrameCall
-- FrameCall('CASTING', 10, function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ100Ö¡µÄFrameCall
-- FrameCall('CASTING', 20) -- °ÑÃû³ÆΪCASTINGµÄFrameCallµ÷Óüä¸ô¸ÄΪ20Ö¡
-- FrameCall('CASTING', 20, true) -- °ÑÃû³ÆΪCASTINGµÄFrameCallÏ´ε÷ÓÃÑÓ³Ù¸ÄΪ20Ö¡
-- ×¢£ºfnAction·µ»Ø0±íʾ´ÓFrameCallÖÐÒƳý×Ô¼º
--===============================================================================================
local _tFrameCall = {} -- fc±í ¼üÖµ¶Ô¼¯ºÏ
local _framecalls = {} -- a mirror table to avoid error: invalid key to 'next'
local _framecount = 0  -- Ö¡¼ÆÊýÆ÷
local _framecall_t   -- Ñ»·Ê¹ÓÃfc±í ¼õÉÙƵ·±×¢²á·´×¢²áʱн¨±íµÄ¿ªÏú

local function onFrameCall()
	_framecount = _framecount + 1
	-- create mirror
	for szKey, fc in pairs(_tFrameCall) do
		_framecalls[szKey] = fc
	end
	-- traverse fc calls
	for szKey, fc in pairs(_framecalls) do
		if fc.nNext <= _framecount then
			fc.nNext = _framecount + fc.nInterval
			local res, err, trace = X.XpCall(fc.fnAction, fc.oArg)
			if not res then
				X.ErrorLog(err, 'onFrameCall: ' .. szKey, trace)
			elseif err == 0 then
				_count = _count - 1
				_framecall_t = _tFrameCall[szKey]
				_tFrameCall[szKey] = nil
				if _count == 0 then
					LuaActive_Enable(false)
				end
			end
		end
		_framecalls[szKey] = nil
	end
end

function X.FrameCall(szKey, nInterval, fnAction, oArg)
	local bOnce, bUnreg
	if type(szKey) == 'function' then
		-- FrameCall(fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, 0, szKey, nInterval
	elseif type(szKey) == 'number' then
		-- FrameCall(nInterval, fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, szKey, nInterval, fnAction
	elseif type(nInterval) == 'function' then
		-- FrameCall(szKey, fnAction[, oArg])
		nInterval, fnAction, oArg = 0, nInterval, fnAction
	elseif type(nInterval) == 'boolean' then
		-- FrameCall(szKey, false)
		nInterval, bUnreg = nil, true
	elseif nInterval and type(fnAction) ~= 'function' then
		-- FrameCall(szKey, nInterval, bOnce)
		fnAction, bOnce = nil, fnAction
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûfcµ÷ÓÃ
			szKey = GetTickCount()
			while _tFrameCall[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		if not _tFrameCall[szKey] then
			_tFrameCall[szKey] = _framecall_t or {}
			_framecall_t = nil
			_count = _count + 1
			LuaActive_Enable(true)
		end
		local fc = _tFrameCall[szKey]
		fc.fnAction = fnAction
		fc.oArg = oArg
		fc.nNext = _framecount
		fc.nInterval = nInterval or 0
	elseif nInterval then -- modify
		local fc = _tFrameCall[szKey]
		if fc then
			if not bOnce then
				fc.nInterval = nInterval
			end
			fc.nNext = _framecount + nInterval
		end
	elseif szKey and bUnreg then -- unreg
		if _tFrameCall[szKey] then
			_count = _count - 1
			_framecall_t = _tFrameCall[szKey]
			_tFrameCall[szKey] = nil
			if _count == 0 then
				LuaActive_Enable(false)
			end
		end
	elseif szKey then -- get registered breathecall info
		local fc = _tFrameCall[szKey]
		if fc then
			return szKey, fc.nInterval, fc.nNext - _framecount
		end
		return
	end
	return szKey
end

--================================= render call ===============================================
-- RenderCall(szKey, nInterval, fnAction, oArg)
-- RenderCall('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄRenderCallµÄÐÅÏ¢
-- RenderCall('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄRenderCall
-- RenderCall('CASTING', function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ×îСֵµÄRenderCall
-- RenderCall('CASTING', 100, function() end, oArg) -- ×¢²áÃû³ÆΪCASTINGµ÷Óüä¸ôΪ100µÄRenderCall
-- RenderCall('CASTING', 200) -- °ÑÃû³ÆΪCASTINGµÄRenderCallµ÷Óüä¸ô¸ÄΪ200ºÁÃë
-- RenderCall('CASTING', 200, true) -- °ÑÃû³ÆΪCASTINGµÄRenderCallÏ´ε÷ÓÃÑÓ³Ù¸ÄΪ200ºÁÃë
-- ×¢£ºfnAction·µ»Ø0±íʾ´ÓRenderCallÖÐÒƳý×Ô¼º
--=============================================================================================
local _tRenderCall = {} -- rc±í ¼üÖµ¶Ô¼¯ºÏ
local _rendercalls = {} -- a mirror table to avoid error: invalid key to 'next'
local _rendercall_c = 0 -- the count of rendercalls
local _rendercall_t   -- Ñ»·Ê¹ÓÃrc±í ¼õÉÙƵ·±×¢²á·´×¢²áʱн¨±íµÄ¿ªÏú
local _rendercall_ref -- ×¢²á'þ±ê¼Ç ÓÃÓÚûÓÐrcµ÷ÓÃʱ·´×¢²á'þ

local function onRenderCall()
	_time = GetTime()
	-- create mirror
	for szKey, rc in pairs(_tRenderCall) do
		_rendercalls[szKey] = rc
	end
	-- traverse rc calls
	for szKey, rc in pairs(_rendercalls) do
		if rc.nNext <= _time then
			rc.nNext = _time + rc.nInterval
			local res, err, trace = X.XpCall(rc.fnAction, rc.oArg)
			if not res then
				X.ErrorLog(err, 'onRenderCall: ' .. szKey, trace)
			elseif err == 0 then
				_rendercall_c = _rendercall_c - 1
				_rendercall_t = _tRenderCall[szKey]
				_tRenderCall[szKey] = nil
				if _rendercall_c == 0 then
					UnRegisterEvent('RENDER_FRAME_UPDATE', _rendercall_ref)
					_rendercall_ref = nil
				end
			end
		end
		_rendercalls[szKey] = nil
	end
end

function X.RenderCall(szKey, nInterval, fnAction, oArg)
	local bOnce, bUnreg
	if type(szKey) == 'function' then
		-- RenderCall(fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, 0, szKey, nInterval
	elseif type(szKey) == 'number' then
		-- RenderCall(nInterval, fnAction[, oArg])
		szKey, nInterval, fnAction, oArg = nil, szKey, nInterval, fnAction
	elseif type(nInterval) == 'function' then
		-- RenderCall(szKey, fnAction[, oArg])
		nInterval, fnAction, oArg = 0, nInterval, fnAction
	elseif type(nInterval) == 'boolean' then
		-- RenderCall(szKey, false)
		nInterval, bUnreg = nil, true
	elseif nInterval and type(fnAction) ~= 'function' then
		-- RenderCall(szKey, nInterval, bOnce)
		fnAction, bOnce = nil, fnAction
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûrcµ÷ÓÃ
			szKey = GetTickCount()
			while _tRenderCall[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		if not _tRenderCall[szKey] then
			_tRenderCall[szKey] = _rendercall_t or {}
			_rendercall_t = nil
			_rendercall_c = _rendercall_c + 1
		end
		local rc = _tRenderCall[szKey]
		rc.fnAction = fnAction
		rc.oArg = oArg
		rc.nNext = GetTime()
		rc.nInterval = nInterval or 0
		if not _rendercall_ref then
			_rendercall_ref = X.RegisterEvent('RENDER_FRAME_UPDATE', onRenderCall)
		end
	elseif nInterval then -- modify
		local rc = _tRenderCall[szKey]
		if rc then
			if not bOnce then
				rc.nInterval = nInterval
			end
			rc.nNext = GetTime() + nInterval
		end
	elseif szKey and bUnreg then -- unreg
		if _tRenderCall[szKey] then
			_rendercall_c = _rendercall_c - 1
			_rendercall_t = _tRenderCall[szKey]
			_tRenderCall[szKey] = nil
			if _rendercall_c == 0 then
				UnRegisterEvent('RENDER_FRAME_UPDATE', _rendercall_ref)
				_rendercall_ref = nil
			end
		end
	elseif szKey then -- get registered rendercall info
		local rc = _tRenderCall[szKey]
		if rc then
			return szKey, rc.nInterval, rc.nNext - GetTime()
		end
		return
	end
	return szKey
end

--================================= onactive ===============================================
-- ʱÖÓº¯Êý
--==========================================================================================
local function __OnActive()
	if _no_active then
		return
	end
	onDelayCall()
	onFrameCall()
	onBreatheCall()
end

local frame = Wnd.OpenWindow(X.PACKET_INFO.UICOMPONENT_ROOT .. 'WndFrameEmpty.ini', X.NSFormatString('{$NS}#Interval'))
frame.OnFrameBreathe = __OnActive
frame:Hide()

LuaActive_Enable(false)

end

--=================================== debounce ================================================
-- Debounce(szKey, nTime, fnAction, oArg)
-- Debounce('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄDebounceµÄÐÅÏ¢
-- Debounce('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄDebounce
-- Debounce('CASTING', 100, function() end, oArg) -- ×¢²áÃû³ÆΪCASTING·À¶¶Ê±¼äΪ100µÄDebounce
-- Debounce('CASTING', 200) -- °ÑÃû³ÆΪCASTINGµÄDebounce·À¶¶Ê±¼ä¸ÄΪ200ºÁÃë
--=============================================================================================
do
local _tDebounce = {}
function X.Debounce(szKey, nTime, fnAction, oArg)
	local bUnreg
	if type(szKey) == 'number' then
		-- Debounce(nTime, fnAction[, oArg])
		szKey, nTime, fnAction, oArg = nil, szKey, nTime, fnAction
	elseif type(nTime) == 'boolean' then
		-- Debounce(szKey, false)
		nTime, bUnreg = nil, true
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûrcµ÷ÓÃ
			szKey = GetTickCount()
			while _tDebounce[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		_tDebounce[szKey] = {
			nTime = nTime,
			nNext = GetTime() + nTime,
			fnAction = fnAction,
			oArg = oArg,
		}
	elseif nTime then -- modify
		if _tDebounce[szKey] then
			_tDebounce[szKey].nTime = nTime
			_tDebounce[szKey].nNext = GetTime() + nTime
		end
	elseif szKey and bUnreg then -- unreg
		_tDebounce[szKey] = nil
	elseif szKey then -- get registered rendercall info
		local d = _tDebounce[szKey]
		if d then
			return szKey, d.nTime, d.nNext - GetTime()
		end
		return
	end
	return szKey
end
X.BreatheCall(X.NSFormatString('{$NS}#Debounce'), function()
	local nTime = GetTime()
	for szKey, d in pairs(_tDebounce) do
		if nTime >= d.nNext then
			local res, err, trace = X.XpCall(d.fnAction, d.oArg)
			if not res then
				X.ErrorLog(err, 'onDebounce: ' .. szKey, trace)
			end
			_tDebounce[szKey] = nil
		end
	end
end)
end

--=================================== throttle ================================================
-- Throttle(szKey, nTime, fnAction, oArg)
-- Throttle('CASTING') -- »ñÈ¡Ãû³ÆΪCASTINGµÄThrottleµÄÐÅÏ¢
-- Throttle('CASTING', false) -- ×¢ÏúÃû³ÆΪCASTINGµÄThrottle
-- Throttle('CASTING', 100, function() end, oArg) -- ×¢²áÃû³ÆΪCASTING·À¶¶Ê±¼äΪ100µÄThrottle
-- Throttle('CASTING', 200) -- °ÑÃû³ÆΪCASTINGµÄThrottle·À¶¶Ê±¼ä¸ÄΪ200ºÁÃë
--=============================================================================================
do
local _tThrottle = {}
function X.Throttle(szKey, nTime, fnAction, oArg)
	local bUnreg, bThrottle
	if type(szKey) == 'number' then
		-- Throttle(nTime, fnAction[, oArg])
		szKey, nTime, fnAction, oArg = nil, szKey, nTime, fnAction
	elseif type(nTime) == 'boolean' then
		-- Throttle(szKey, false)
		nTime, bUnreg = nil, true
	end
	if fnAction then -- reg
		if not szKey then -- ÄäÃûrcµ÷ÓÃ
			szKey = GetTickCount()
			while _tThrottle[tostring(szKey)] do
				szKey = szKey + 0.1
			end
			szKey = tostring(szKey)
		end
		if _tThrottle[szKey] and _tThrottle[szKey].nNext > GetTime() then
			bThrottle = true
		else
			_tThrottle[szKey] = {
				nTime = nTime,
				nNext = GetTime() + nTime,
				fnAction = fnAction,
				oArg = oArg,
			}
			local res, err, trace = X.XpCall(fnAction, oArg)
			if not res then
				X.ErrorLog(err, 'onThrottle: ' .. szKey, trace)
			end
		end
	elseif nTime then -- modify
		if _tThrottle[szKey] then
			_tThrottle[szKey].nTime = nTime
			_tThrottle[szKey].nNext = GetTime() + nTime
		end
	elseif szKey and bUnreg then -- unreg
		_tThrottle[szKey] = nil
	elseif szKey then -- get registered rendercall info
		local d = _tThrottle[szKey]
		if d then
			return szKey, d.nTime, d.nNext - GetTime()
		end
		return
	end
	return szKey, bThrottle
end
X.BreatheCall(X.NSFormatString('{$NS}#Throttle'), function()
	local nTime = GetTime()
	for szKey, d in pairs(_tThrottle) do
		if nTime >= d.nNext then
			_tThrottle[szKey] = nil
		end
	end
end)
end

function X.FinallyThrottle(...)
	local _, bThrottle = X.Throttle(...)
	if bThrottle then
		X.Debounce(...)
	end
end


The good thing about photography may be the chance it offers to individuals taking photographs. There's several options for that professional photographer who's searching to earn money taking photos. Some might choose to take images of the gorgeous sunset or mountain tops, while some prefer to hire themselves to individuals to take photographs on their behalf. Event photography is an extremely popular kind of employment inside the photography industry. Event photography software serves to create this task a little simpler. Unsure what event photography is and the reason why you might contemplate it? Continue reading to discover all the details onto it.
Have you been to some wedding? This is a silly question since most likely, you have been to numerous individuals. Why not a sports event or perhaps a concert? Odds are, if you have attended these, you've observed photographers there taking photos from the event. This really is, inside a gist, what event photography is. It's photography taken at occasions like a wedding, ball game, concert, awards show etc. Event photography software can help you with this particular job.
Do Event Photographers Make A Nice Income?
If you are searching for a kind of photography that is really certain to enable you to get a nice income, event photography could it be. While for many photographers it is not about earning money, they cannot deny that event photography is extremely lucrative. Some event photographers have reported making around 1000s of dollars to take pictures at one event. That's certainly lots of money.
Most importantly not every event photographers make this kind of money, although most do provided they are very professional. Event photography software enables them to to consider and manage professional event photos.
Individuals will pay to possess quality event photos taken, therefore it is essential for you, being an event professional photographer, to possess quality equipment. What this means is making some investment. You will need to spend some money to obtain money you have to purchase the best cameras available, including your camera and event photography software.
Let us begin with the apparent: your camera. You will want to obtain a camera, but steer clear of the really small cameras – individuals are suitable for amateurs. There are several great digital camera models available on the market that have the standard camera look, but they are digital. These possess the big lens, great zoom features and ideal megapixel quality. Choose a digital which has a minimum of 8 megapixels. This might set you back from $400 on up.
Grab a great event photography computer software, too. A great event photography computer software will help you to manage your photos in the simplest way possible. If you are unsure which event photography computer software to purchase, read some online reviews or check around.
Next, you will want to purchase a big storage device. Think a minimum of 2GB, since the photographs using the greatest quality tend to consider probably the most space. Nothing's more unpleasant than staying at a gig and not having enough space, so purchase a couple of 2GB cards and you will be set there.
Good batteries will also be needed. Make certain they're lengthy lasting and hold a great charge (if they are rechargeable). Have an extra group of batteries, too.
Finally, you will want to purchase a good stand and situation. The stand will help you to take great still shots, as the situation will safeguard your investment funds. Certainly don't skimp here.
So Why Do Event Photography?
Still not offered on why event photography might be a great selection for you? That's okay, as many folks are skeptical from it. We'll provide you with a couple reasons here.
-Versatility. Among the advantages of event photography is it providers photographers with a lot of versatility. You'll be able to choose the number of occasions you need to do and the number of hrs you're employed. Usually, you will not need to work weekdays, or you do, at least 70 for any couple of hrs. This will work for parents who wish to work and have time using their kids. Using event photography software will help make things much more flexible and simple.
-Great Pay. Maybe you have desired to make hundreds or 1000s of dollars just for a couple of hrs work? That you can do exactly this being an event professional photographer. Event photography pays perfectly, so it is easy to create lots of money doing the work.
There are plenty of reasons why you need to use event photography software, but we will not enter into all individuals now. Rather, we'll just provide you with the greatest reason, which is it makes your work a great deal simpler. Event photography software will automate the entire process of managing and naming photos, and can help you when the time comes to edit the photos. That's the reason you should think about buying event photography software.
6am Media also provides one of the best event photography Singapore for all kinds of events. They can even produce a promotional video to pull the attention of the public and make all efforts to spread the word out before the event.


text:
ave Kotinsky/Getty Images for Mohegan Sun
Khloé Kardashian Seemingly Shades Jordyn Woods Ahead of 'KUWTK' Cheating Scandal Episode
Jun 23, 2019 2:03 pm·
Queen of shade! Khloé Kardashian seems to be surrounding herself with positivity as she gears up to relive all of the drama that went down after her ex-boyfriend Tristan Thompson cheated on her with her little sister Kylie Jenner's best friend, Jordyn Woods. The 34-year-old spent time best friends Malika Haqq and Khadijah Haqq as they traveled to Uncasville, Connecticut to make an appearance at the opening of the Mohegan Sun resort's new nightclub, novelle — and they seemed to subtly throw shade at the 21-year-old model ahead of the Sunday, June 23, episode of Keeping Up With the Kardashians.
"Workday with my BFF. Not a bad day 😜," Khloé wrote in the caption of a photo of her and Malika, 36. Fans took to the comments to gush over their longtime friendship.
"Hope y'all's friendship never ends 💛💛," one fan wrote, and another commented, "Lovely friendship ❤❤." But another fan decided to throw just a tiny bit of shade. "The only friendship we trust," they wrote, and the Good American founder commented back, "Same."
Many fans interpreted the reality star's comment as shade towards Jordyn because she had a similar, close friendship with Kylie, 21, before the cheating scandal. Fans used to praise Jordyn and Kylie for having such a great, supportive relationship, so it was a major shock when details about Jordyn's cheating scandal with Khloé's baby daddy came to light because no one expected Jordyn to betray her best friend's sister.
As In Touch previously reported, Jordyn hooked up with Tristan, 28, at a house party at his place over Valentine's Day Weekend 2019. Once Khloé found out, the entire Kardashian/Jenner family distanced themselves from Jordyn and Tristan, and only one besides Khloé who was also very much affected by the scandal was Kylie because she also lost her best friend.
The timing of Khloé's shade towards Jordyn is interesting because it came just one day before the Sunday, June 23, episode of the family's long-running E! reality TV series, where fans will learn details about the Kardashian/Jenner family found out about the scandal and how they dealt with it.
Keeping Up With the Kardashians airs on E! Sundays at 9 p.m. ET.
Malika Haqq
Khloé Kardashian Is in a 'Better Place' After Tristan Thompson Cheating Scandal
Erm, You Guys, 'KUWTK' Spelled Jordyn Woods' Name Wrong in the Trailer ... So That's Some Petty S--t
Kylie Jenner Details Her First Phone Call With Jordyn Woods Post-Tristan Thompson Scandal — Watch!

redpajama_set_name: RedPajamaCommonCrawl


1 of 41 | Welcome Home!
9 of 41 | Stunning mud room!
Stunning home located in this nationally renowned Farm to Table neighborhood. This home sits on a half-acre lot that backs to the lush trees of the Willowsford Conservancy. With its 3-car garage, fenced back yard, charming front porch and covered back porch, this home has all the outdoor space you need. Once inside you will see this home shows like a model, with its dark wide plank hardwood floors, brand new custom light fixtures, barn doored office nook, custom white barn doored mud room and a brand-new stunning laundry room. The kitchen is open to the breakfast area and family room with bump out. There is a first-floor office with huge walk in closet that could double as a guest room. The Dining Room is both long and wide to comfortably entertaining. The walk-in pantry off the butler~s pantry offers extra storage.The second floor has the perfect size master suite, 1 guest suite and 2 large bedrooms (that share a Jack-and-Jill bath) that are nicely spaced from the master. The renovated, bedroom-level laundry room makes this chore enjoyable~well almost. The finished lower level has a huge rec room with enough room for any hobby. There is a full bath an unfinished exercise room and plenty of storage as well in this walk-up basement. Over $40,000 in recent updates. This home is located in Willowsford ~ which is a one of a kind neighborhood with resort type amenities ~ 2 pools with covered cabanas, two amazing club houses, splash park (coming in 2019), zip line, custom tree houses, archery range, gym, miles of outdoor trails, a lake with kayaks and so much more. There are also activities for everyone ~ cooking class, boot camp, date nights, 4th of July festival, summer time flick and float movie nights and so much more.


World Casino Directory has worldwide casino jobs and employment opportunities listed including gaming employment in Kazakhstan. Casino employers may post free Kazakhstan job listings and of course as always job seekers always search with ease. Click the headers of the table below to sort the jobs by region, job category, salary and more. Find job openings and seize your position to secure your casino job in Kazakhstan immediately.
Special offer: To get off to a good start, our Kazakhstan casino job list is giving away free job postings to human resources departments for free. All you have to do is be a member of World Casino Directory, which is free - click here if you need to signup.


About Trystette: Performance art, singing/composing has been my artistic trail since the late 80's when I was based in Berlin, Germany.
I am a New Zealander who has lived in five countries and share my journey through both music and performance. I come from a multi media background and this is apparent in my work. I perform both nationally and internationally, residing in New York.
My current project is called Alazon In The Quiet Room - Part 1 - a theatrical show that myself and fellow artists are building and performing - about 75 mins of songs and performance from my last three decades and from my new album combined with performance art by fellow American artists in New York city. My new album Alazon In The Quiet Room will be released mid 2016.
I am on a 0-1 Artist of Extraordinary Ability - this is my 5th 0-1, four renewals with the same sponsor and one change of sponsor after the first 0-1 in 2003.
Were there any difficulties you may have faced while applying for the visa?
There is a huge amount of material one must supply to support the evidence to attain an 0-1 visa. Proof of press reviewing your work is imperative and this requires a lot of work to make sure you have the right PR and the attention of the press. Also, traveling out of the USA continent to have your visa verified, even once it is a approved as the final interview is at a US Consulate in your homeland or a country where you have a work-relation or reason for being there, you cannot presume your visa will be issued in a timely manner and you sometimes have to wait it out. This is very costly if you are already based in the USA.
Applying for an 0-1 visa requires stamina and concentration, it is not an easy visa to obtain so be prepared to do the work and go the mile. The visa is usually for three years once you receive it, but time travels fast and you must always keep in mind the preparation for the renewal or time will creep up on you. This is a visa dedicated to academics or creatives with staying power - not for wimps! Choose a lawyer that will only submit once they are sure you have enough evidence - a refusal is a refusal, point blank. This is why I chose Marcus Yi, he is strict about what will or won't make the grade and you need this. He understands artists and their issues very well and is always there to help you find a way to reach your goal. At the same time he remains constant about what will push you forward. You need this. You need a lawyer that really cares about your future.


What dresses are the most beautiful on girls?
I suggest floral and colorful dresses will look very pretty to girls like us.
Traditional Dresses enhance the beauty of girls. Also some designer dresses in the latest style may also helps to increase their beauty.
This time you have varieties of option to choose the dresses. According to new trend and the seasons I would like wear floral prints dresses, unique print prom dresses and many more.
There's so many dresses in the world to choose from! I say anything that looks good on you is just that.
While these are only common assumptions and stereotyped versions of the female body, a lot of articles have been published as guides for buying the appropriate dress or find the perfect style according to that given shape.
On this website you can find a list and you can also take a quiz to find out what your body shape is. You will then be given suggestions and everything. Here is also a guide to find the perfect dress according to your body type.
However, I think that you should feel free to wear whatever you want as long as you like how it looks on you. Try on the clothes you like the most (even though it isn't "recommended" by those guides) and if you like it, then get it! If you like online shopping, then ASOS.com is the perfect website to go to, because it has different brands and the prices range greatly according to your needs.
Everyone adores a decent get-away and great landscape however the accompanying ten spots are more than that. They are dreamlike amazing spots that you can just dream of and perhaps get sufficiently fortunate to visit. These spots flaunt our delightful world without attempting.
There are various dresses for 2018 Fashion trends in which the girls can look beautiful.I came across a website when I was surfing for trendy dresses for girls.I'm sharing with all of you.
What are some of the most beautiful places on earth?
What are some of the most important, iconic, and/or beautiful scientific images?
What are some of the most beautiful places in Iceland?
What are some beautiful words to praise a girl's beauty?
What are the most Beautiful National Parks in USA?
What is the most beautiful place ever?
What is the most beautiful place in the Netherlands?


Just five years after Reading FC almost vanished the club reached a high point it has not managed since - victory at Wembley.
Not only had Reading emerged from Robert Maxwell's merger plans of 1983, but the club was about to lose its hard won place in the Second Division.
Yet victories over QPR, Oxford, Nottingham Forest, Bradford City and Coventry in the Simod Cup, gave fans an unforgettable day at Wembley amid the gloom of impending relegation.
Midfielder Stuart Beavon was key.
These days, the 56-year-old runs his own painting and decorating business but football is never far away.
His dad Cyril was a tough defender for Oxford and son Stuart is currently banging in goals for Burton Albion in League Two.
But Wembley on Sunday, March 27, 1988 remains a football high for the Beavon family although injury almost cost Stuart his place. An injection of Cortizone was necessary.
The day before the match players had visited to look around the stadium before a stopover nearby where the main job was to not let manager Ian Branfoot see how many drinks they had had.
"I thought we'd get stuffed 5-0," he said.
Seven minutes later Michael Gilkes equalised and five minutes after that was brought down for a penalty.
He scored the penalty but his old trick - look one way, put it the other - didn't quite work as the keeper went the right way.
Gilkes had a quieter second half but Mick Tait hit the third on 55 minutes and Neil Smillie got another for a 4-1 win. From then on Reading played a free passing game.
The cup was placed at the front of the coach for the journey back to the Ramada Hotel (now Penta) for a party which lasted until 4am the next day.
Reading were never able to defend the Simod Cup due to the relegation which meant they were no longer eligible.
Beavon moved to Northampton in 1991 and eventually went into the non-league game including a spell at Ardley United where he played alongside 17-year-old son Stuart.
"I wish I'd played for England.....but it was never going to happen"
Beavon had been a rare capture for Reading in 1980. He had broken into the Spurs team in the late 1970s but in a squad which included Ossie Ardiles, Ricky Villa and Glenn Hoddle, opportunities were hard to come by.
He played over 400 times for Royals and says Wembley will always be a highlight. But one thought never quite goes away.


I thought this was absolutely fastinating and a really good insight into how Politics works.
Loved the idea of Cameron and Clegg secretly meeting in Admiralty House (after Cameron had shook off reporters) and also the idea of Brown and Mandelson using secret passageways (wey hey) under No 10 to avoid being seen by the press when they went to negotiate with the Lib Dems.
I don't really like Mandleson but have to say I thought he came across well last night. Also Clegg really impressed me.
been able to change it into what they WISH they had said.
out looking good. Especially since Gordon Brown wasn't there to disagree with the Mandelson version of events.
and "is my hair OK, Peter?". And then Peter whips out an expensive designer comb and daintily touches up Gordie's fringe.
My opinion prior to this was rock bottom, so him going up in it wasn't too difficult lol! True what you say though - and he was always a 'Blairite' so I was never sure how he fitted into the Brown world iyswim.
Thanks for the link SuzyWoo I only saw the end of it but found it riveting and the reporting seemed more balanced than I'm used to.
No amount of money could in past cajole me to vote Tory and Mrs Thatcher was until Mr Blair the most corrupt Prime Minister, but I have been impressed with the way Mr Cameron has set out his stall and begun governing.
Felt he really appealed to those of no party.
I cannot get over his opening words on becoming Prime Minister, turning the Tory lassez faire origins upside down "Those that can should and those who can't we will always help".
I presume Mr Tebbit had a heart attack on hearing those words.
For me last night's prog highlighted the spending promises of Labout without costing or the resources to cover the spending.


text:
Contact: +381 (0)11 3973 599
Packaged program
Conventional program
Pasteurized program
Organic program
Chocolate program
Our plantations
BEEF STEAK ("DUBROVACKA PASTICADA")
Recipes >>
Prick 700g of boneless beef with garlic and prunes, then fry in hot oil. Remove the meat and fry the vegetables (celery, onion, carrot, parsley) in the same oil.
When it turns yellow, add tomatoes, wine (sweet), soup cube, roll the meat and simmer until the meat softens. Serve with gnocchi.
Latest events and current events
Coming soon - new packaging
Chocolate coated plum soon in a new package. Modern and likable!
Agranela in the media
Fantastic five from Brussels! World chefs reward Serbian products
World chefs reward Serbian products Brussels, June 26, 2019 - Five Serbian companies received the prestigious award for the first-class taste of their products "Superior Taste Award" and had the opportunity to learn more about the promotional and business opportunities that this award brings: Agranela for prunes, Real Red Raspberry for raspberry spread, Ecovital for cold-pressed pumpkin seed oil, Happy Honey for raw honey with lyophilized plums and Arrow for chopped ajvar. Hundreds of food and beverage producers from around the world, chefs, sommelier, representatives of retail chains and the media, attended the awards ceremony in Brussels. Participation in this competition was supported by the USAID Competitive Economy Project. "This is a great success for Serbian producers. The award for the first-class taste highlights these products that have been tasted and awarded by 100 leading world and Michelin chefs. In that way, the consumer buys these products with confidence and knows that he gets top quality for the money spent," said Alan Coxon, a member of the jury and the host of this year's ceremony of the International Taste Institute. On the same day, on the occasion of awarding Serbian premium products, a reception was held at the Embassy of the Republic of Serbia in Brussels, in cooperation with the Mission of The Republic of Serbia to the European Union. The event was attended by representatives of the diplomatic corps, Belgian company and importers of food products. Marina Jovicevic, the Ambassador of the Republic of Serbia to the Kingdom of Belgium, opened the gathering and addressed the audience: "We do not often have the opportunity to gather at such a beautiful event for which the main reason was the taste." She pointed out that this award will open the door for our producers for future business cooperation between Serbia and Belgium, but also other EU countries. "I hope that this trend will continue in the coming years, along with our progress on the European path and our efforts to adapt to European standards and certifications." Jasmina Debeljak Maljkovic, Deputy Director of the USAID's Competitive Economy Project, pointed out the importance of promoting Serbian high-quality food products in foreign markets, primarily in the EU market: "This event is exactly the way we can promote the Serbian high-quality food industry. Today, we joined the best products from the world and showed that in addition to a quality raw material base of fruits and vegetables, Serbian companies have the potential and capacity to make high value products."
Agranela d.o.o.
Stela Prunela
Agranela d.o.o. is a company that deals with the purchase, processing, packaging and further placement of its products on both domestic and foreign markets.
Phone: +381 (0)14 227 610 Phone: +381 (0)14 293 476 Fax: +381 (0)14 230 224 agranelava@agranela.rs Mirka Obradovića bb, 14000 Valjevo, Serbia
Phone: +381 (0)14 35 41 310 Phone: +381 (0)14 35 41 311 Phone: +381 (0)14 35 41 273 Fax: +381 (0)14 35 41 263 agranelasu@agranela.rs Šušeoka, 14222 Divci, Serbia
SALES
Phone: +381 (0)11 3973 599 Phone: +381 (0)11 3098 600 Phone: +381 (0)11 3098 601 Fax: +381 (0)11 30 99 598 agranelabg@agranela.rs Jove Ilića 65, 11040 Belgrade, Serbia
Copyright © Agranela d.o.o. 2020. | All right reserved | Created by NormaReclamare


text:
About investment
Imagine a tranquil community where retired professionals, military, and DOD civilians can live away from the crowds and demands of city life. An exclusive gated community that provides retired active adults resort style living in a peaceful, well thought out, phase planned development. I present to you Lifestyle Georgia Active Adult Community.
Apartments with High Standards
Spacious, Luxurious, & Energy Efficient
Lifestyle Geogia Active Adult Community will feature 9 foot ceilings, energy efficient appliances, crown molding, luxury master bath with shower seating, laundry area, and a combination of carpet and hardwood flooring.
Each energy efficient unit will feature smart home technology, wireless security systems, tankless water heaters, eco-friendly appliances, and high efficiency central air units.
Rent will cost between $1,670.00 to $2,500.00 per month.
1 bedroom with 1.5 baths (1,479 sqft.) – 18 Units
2 bedroom with 2 baths (1,913 sqft) – 36 Units
3 bedroom with 2.5 baths (2,111 sqft.) – 8 Units
See all home features here.
In addition to energy efficient homes, Lifestyle Georgia Active Adult Community will provide environmentally friendly energy sources through solar power and natural gas.
The community will derive its fresh water supply from its own water tower and participate in a community wide recycling program.
This overall strategy will keep electricity and water costs to a minimum, create new jobs, enhance the community's tax revenue, and increase Lifestyle Georgia Active Adult Community's overall profit.
Cutting-Edge Fitness Facility
Valued residents will enjoy a 75,000 square foot state of the art two-level fitness facility which will include space for group exercise classes, an Olympic size pool, heated indoor pool, hot tubs, sauna(s), virtual golf, basketball courts, a rock climbing wall and a variety of exercise equipment.
City Within a City
The Mega PLEX, a two level, 200,000 square foot building will house a barber and beauty shop, a spa for manicures, pedicures, and body massages, a restaurant, coffee shop, Bath & Body Works, and a post office for picking up and dropping of packages and mail.
There will be a ballroom for social gatherings throughout the year.
Additional amenities will include a theater, two proposed 18-hole golf courses, outside pools, nature trails, greenhouses, tennis courts, softball fields, a football field, and a track. An automatic "do-it-yourself" car wash will also be available for residents.
See all planned community features here.
Solar Powered Homes
Spanish Clay Tile Roof
Raising the standard
of living in Georgia
We aim to build Lifestyle Georgia Active Adult Community in the outskirts of Atlanta.
Although there are over 30 active adult communities in the Atlanta metro area, few offer such high quality comforts that exceed the expectations of their active adult residents.
Lifestyle Georgia Active Adult Community will elevate the standard of active adult living while reducing its carbon footprint. Lifestyle Georgia Active Adult Community aims to become the leader in the industry and the standard by which all others are measured.
Lifestyle Georgia Active Adult Community will elevate the standard of active adult living while reducing its carbon footprint. We aim to become the leader in the industry and the standard by which all others are measured.
Roosevelt Oggs, Sr., MBA
CEO of The Park at Valley View Georgia
Roosevelt Oggs, Sr., MBA is the CEO of Lifestyle Georgia Active Adult Community. He is a leader and visionary who believes that one person can make a difference in the world. He attributes the development of his can do attitude, tireless work ethic, and commitment to the community to his father who was not only a business owner but also a local pastor. Roosevelt has served his country diligently within the United States and abroad. He began his military career in 1991 as a member of the California Air National Guard. Throughout his career, Roosevelt received numerous awards and medals for his leadership and ability to serve under extremely difficult situations while maintaining core values. Roosevelt received his Bachelor of Arts degree in Applied Behavioral Science from National-Louis University and his Master's in Business Administration from Argosy University. Roosevelt is the father of five and believes that it is his responsibility to leave the world a better place, not only for his children, but for others as well.
To leave the world a bit better, whether by a healthy child, a garden patch, or a redeemed social condition; to know that even one life has breathed easier because you have lived - that is to have succeeded. - Ralph Waldo Emerson
Watch Our Video Presentation
Watch Roosevelt Ogg's interview and presentation of his vision for Lifestyle Georgia Active Adult Community.
Our community in numbers
Each building will house 62 units and include
an interior court
We aim to build Lifestyle Georgia Active Adult Community
on a large plot of land, about the size of 265 acres
At this time, Lifestyle Georgia Active Adult Community
requires $65,000,000 of investor funds.
Registered Name and Corporate Structure
Lifestyle Georgia Active Adult Community is registered as a limited liability corporation in the State of Georgia.
Required Funds
At this time, Lifestyle Georgia Active Adult Community requires $65,000,000 of investor funds. These funds will be used to acquire the property and the construction of the living quarters and hire security personnel.
Investor Equity
Roosevelt Oggs intends to rent the luxury apartments for a continuous stream of income to be distributed to investors at the agreed upon rate.
© 2017 Lifestyle Georgia Active Adult Community. All Rights Reserved.


text:
Q: vue nuxt qrcode reader installation I'm having a Nuxt.js project where I try to use the qrcode-scanner library
I fallow the steps to register globaly.
I made a js file in plugins folder and add the fallowing code
import Vue from "vue";
import VueQrcodeReader from "vue-qrcode-reader";

Vue.use(VueQrcodeReader);

It looks pretty straight forward, but my app crashes and never loads. Anyone experienced this problem ?

A: i test your code and it works for me by the way i explain my steps for you, maybe you forget one step:

*

*install package with npm install vue-qrcode-reader

*make file named qr.js in my plugin folder

*then put this code on it:

import Vue from 'vue'
import VueQrcodeReader from 'vue-qrcode-reader'

Vue.use(VueQrcodeReader)

*add plugin to my nuxt.config.js file :

  plugins: ['~/plugins/qr']

NOTE:qr is the name of my file(qr.js)

*use the plugin in my vue page with adding following code in it's place:

<qrcode-stream></qrcode-stream>
<qrcode-drop-zone></qrcode-drop-zone>
<qrcode-capture></qrcode-capture>

redpajama_set_name: RedPajamaStackExchange


"I am pleased with the website that RedHouseMedia designed for me. The agency was able to create exactly what I needed and it will make my job easier to do".
It has been a pleasure working with Aaron and all the RedHouseMedia staff. Their creativity and ideas have been a huge eye opener for us and they have helped us progress and start to diversify the Mille Lacs area in a fun and innovative way. It's heartwarming to see how they have come to love the Mille Lacs area as those of us who reside here already do and they have become part of our family.
We undertook the onerous process of changing our well-established company name and brand identity two years ago, with the challenge of ensuring none of our stakeholders - employees, customers, suppliers, community partners, etc. - would be lost in the transition. Partnering with RedHouseMedia has allowed us to successfully facilitate this transition, and build an even stronger brand identity through advertising, website, social media and content marketing strategies. Simply put, we couldn't have done it without RedHouseMedia.
We have worked with Aaron and RedHouseMedia for years. He and his firm are extremely creative and have been a valuable partner in achieving our goals of creating a unique image in a very cluttered industry while at the same time achieving marketable results.
Aaron is both creative himself and also has proven adept at developing a creative team in his agency. It appears that he is a good judge of talent. I have multiple deadlines and "wear many hats" so I'm the one that sometimes misses deadlines. As difficult as it must be, Aaron and his team never get rattled and accept the fact that I run when I can and crawl when I'm forced to. I also appreciate Aaron's low-key humor and he is very pleasant to work with regarding all aspects of creativity. Finally, Aaron is someone who recognizes that neither he nor his agency have a monopoly on creativity.
RedHouseMedia lives in rural America and they know our market and our industry. I've had the opportunity to work with RedHouseMedia for seven years and they have always worked within my budget without sacrificing quality. If you want to compete in today's competitive world by driving new revenues and proving your value to your community, RedHouseMedia will deliver. We need to start reaching out and being open to new opportunities, RedHouseMedia will be that resource you need to succeed.
Aaron's leadership and the RHM team's commitment helped us discover our voice; they immersed themselves in our business, developing an intimate knowledge of the customer before embarking on developing solutions. Clearly this is an organization and a collection of talented individuals who put the customer's perspective first and foremost. They deliver innovative solutions that uniquely align with and support the customer's needs.
The staff at RedHouseMedia is never short of innovative ideas. All of their work demonstrates unique ideas and products for the Brainerd School District that captures our traditions and at the same time moves our school and community forward into the future. It is amazing to be a part of a process where Aaron and his staff take complex information, data, descriptions, and stories and then transform them into creative images that capture it all. This doesn't happen by chance. It is a clear testimony to their talent and leadership in advertising, design and marketing.
© 2018 Strateligent. All rights reserved | All images on this site are subject to copyright, and may not be used without permission.


Located in downtown Southampton, Martin's Bicycle Shop has been serving cyclists for 20 years.
Martin's Bicycle Shop has been in business for 20 years in downtown Southampton. The shop has grown in both size and selection over this time to help cater to the growing cycling market. We are a family shop which offers all styles of bicycles from mountain to road, and kids to e-bikes. Our mission is to provide quality products and service from friendly and knowledgeable staff. We also strongly believe in supporting community charities, causes, and events.
Road, mountain, triathlon, fitness, BMX, Sunday afternoon cruiser—you name it, we have it. No matter where or how you ride, we have a complete line-up of bikes from top brands, including Trek, Scott, Norco, and Electra, that'll make your legs spin.
The better you feel, the better your ride. From form-fitting road kits, to mountain baggies, BMX protection, and casual goods, we can help you dress the part with apparel by Louis Garneau, Trek, and FOX.
Think safety, performance, utility, and comfort. We have what you need to get geared up for your first ride, furthest ride, or favourite ride. With a full selection of helmets, shoes, and gloves, high-quality components, plus all the basics like bags, lights, and tools, you'll be ready for anything.


text:
You are at:Home»Payments»Are Cryptocurrencies Going to Peak in 2022?
Are Cryptocurrencies Going to Peak in 2022?
By Eileen O'Connor on	 13 January 2022 Payments
Digitization is a global phenomenon that has the entire world population on edge. For some years now, people living in industrialized countries have been doing most of their work via the Internet. From bank transfers and hotel reservations to studying and virtual continuing education – the Internet has a gigantic number of offers in store.
People working in offices also benefit from smart office technology that would not be possible without the Internet. In the course of this further development, the views of society have also changed.
Most people have a positive attitude toward the Internet and its unlimited possibilities, like for example the £20 Free No Deposit Casino Bonus UK. The desire for an even more digital world is also directed at banks, which are far behind in comparison to other industries. Banks still rely on cash, bank cards, cumbersome account openings and restrictions that make it impossible for customers to deposit cash in other states.
So, let's see what the year 2022 can lead cryptocurrencies to.
Decentralized Structure of the Blockchain
Currently, banks are still centrally organized. There is one main bank and numerous branches. Everything passes through a thousand hands, so to speak, to then get to the main player.
SMS works in a similar way, by the way. Anyone who still sends SMS messages first sends them to a central instance. From there, the message reaches the actual recipient. The system is very vulnerable.
If there are problems in the central instance, then the guarantee of security is lost for everyone involved. Sensitive data could get into circulation, and data protection is at risk. The blockchain is built on a different technology.
It is organized in a decentralized manner and therefore the data is absolutely secure here. That is ingenious.
Companies Demand More Traceability in 2022
Who hasn't experienced this? Quickly placing an order online in the evening and the delivery guarantee assures a quick delivery of the goods. Especially during Black Week, many people rely on the delivery guarantee. If the Christmas gift does not arrive until after the festive season, gift-givers are left empty-handed.
Then the anger is immense and directed against the delivery company as well as the online retailer. But who is to blame in this case? Customers look into the matter, but they rarely find the cause of the missed delivery.
The technology behind currencies such as Bitcoin and Ether, also known as blockchain, stands for maximum transparency. Since all transactions must be confirmed by all companies involved in processes such as ordering and shipping, the source of the error can be uncovered in real time.
Renowned Providers are Flirting with the Blockchain
Anyone who follows the news certainly knows the score. Cryptos are attracting a lot of attention since last year's huge boom. Not only private investors trust in the positive price developments of digital currencies. Large companies are also riding the wave. Starbucks, for example, has opted for the blockchain.
Of course, things can go wrong. Starbucks wants to minimize the error rate and trusts the new technology for cryptos. Amazon is also betting on blockchain to help companies connect.
Facebook is blowing a different horn when it comes to the ideal use of blockchain. The social media portal is planning its own cryptocurrency, which will then be used within Facebook. This cryptocurrency represents a kind of reward system.
Users can secure the new coins when they view advertisements from companies. Users increase their monthly earnings as a result. However, the payout is not expected to be extremely high. Nevertheless, anyone who wants to earn a little extra on the side is in good hands.
Bitcoin: What Investors Need to Watch Out for in the Crypto Market in 2022
Amazon among websites to stop accepting Visa credit cards – who does still accept them?
How to Earn Income with Bitcoin


text:
You are here: Home Tech News
Amazon and Google sued by reps of legendary songwriters over pirated music on their platforms
admin — January 29, 2020 0 comment
(GeekWire Photo)
Amazon and Google failed to police their music marketplaces and allowed pirated recordings to proliferate, according to a series of lawsuits filed last week by organizations representing top songwriters.
GeekWire spotted three lawsuits filed Thursday that name Amazon in Washington state and three others in California against Google. Digital content distributor Valleyarm and an entity called Limitless Int. Recordings are also implicated in the cases.
The suits are nearly identical, alleging that Limitless sells pirated songs on Amazon and Google's music platforms from pretty much every major star from the 1930s through the 1960s, including Frank Sinatra, Ella Fitzgerald, Miles Davis, Louis Armstrong, Billie Holiday and more. The lawsuits lay out several instances of Limitless' "bootlegged" versions of popular albums on the companies' music stores appearing side-by-side in searches with the legitimate versions from record companies. Amazon and Google, the suits allege, are liable because they haven't cracked down on the pirated music sold in their stores.
"All of this should have made it obvious that Limitless is operating a huge music piracy operation," according to one of the suits against Amazon. "Valleyarm and Amazon chose to ignore the evidence of piracy and to participate in the infringement on a massive scale."
We've reached out to Amazon and Google for comment, and we will update this post if we hear back.
Court documents juxtaposed album covers with Limitless' alleged pirated offerings. (Photos Via Court Documents)
The plaintiffs represent legendary songwriters Harry Warren ("That's Amore," "Jeepers Creepers," Chattanooga Choo Choo"); Ray Henderson ("Life is a Bowl of Cherries," "Bye, Bye Blackbird," "Five Foot Two and Eyes of Blue"); and Harold Arlen ("Over the Rainbow," "It's Only a Paper Moon," "Stormy Weather").
Record companies and other organizations concerned about music piracy have gone after individuals who download songs online but have given larger offenders a pass, the lawsuits argue. The digital music stores are not doing their part to battle piracy the way a brick-and-mortar record store would in the past, according to the suits.
From the suits:
It is hard to imagine that a person walking into Tower Records, off the street, with arms full of CDs and vinyl records and claiming to be the record label for Frank Sinatra, Louis Armstrong and Ella Fitzgerald, could succeed in having that store sell their pirated copies directly next to the same albums released by legendary record labels, Capitol, RCA and Columbia, and at a lower price.
Yet, this exact practice occurs every day in the digital music business, where there is unlimited digital shelf space (for example, there are more than 50 million recordings in the Amazon music store) and a complete willingness by the digital music stores to seek popular and iconic recordings from any source, legitimate or not, provided they participate in sharing the proceeds.
The estate of Arlen previously sued Amazon, Google, Apple, Microsoft, and Pandora last year for a similar complaint.
Amazon's massive third-party seller marketplace place has astronomically increased the number of items available on the platform, but it has also made it tougher for the tech giant to identify and boot phony products from its digital stores. Amazon has stepped up its policing of counterfeiters in recent years, and now federal law enforcement officials are cracking down as well.
Amazon has said it spent $400 million on technology to battle counterfeits in 2018, and it has more than 5,000 people working on the issue. The tech giant is lobbying for stiffer federal penalties for counterfeiters. Amazon's consumer chief Jeff Wilke said in October the company needs to do more if it wants to continue to be a trusted retail brand.
"We have to be vigilant and willing to spend hundreds of millions and eventually billions of dollars to protect our customers," Wilke said at the Wall Street Journal Tech Live conference last year.
The plaintiffs in the lawsuits argue that Amazon, Google, Limitless and Valleyarm are infringing on their copyrights. They are seeking monetary damages as well as an injunction barring the defendants from continuing to sell the allegedly pirated music.
Digital music platforms and songwriters have battled in court over previous disagreements, such as last year's issue related to royalties. Spotify paid $1.6 billion in December 2018 to settle a copyright infringement case with music publisher Wixen Music Publishing.
Amazon announced last week that its Amazon Music service has surpassed 55 million customers, still a ways behind market leader Spotify, but inching closer to second place Apple Music.
Google's streaming service is called Google Play Music; Google-owned YouTube also operates YouTube Music.
Here is one of the lawsuits against Amazon and one against Google.
Henderson v. Amazon by Nat Levy on Scribd
Henderson v. Google by Nat Levy on Scribd
Previous Article StormSensor lands more funding to help cities manage flooding and sewage overflow challenges
Next Article Opendoor and MoxiWorks team up to arm real estate agents with cash offers for homes


primitive christmas tree 8 decorations decor pictures.
primitive christmas tree enjoying looking at all the lovely pictures of tress decorations pinterest.
primitive christmas tree country ornaments.
primitive christmas tree decorating ideas decor.
primitive christmas tree download image original resolution ideas.
primitive christmas tree wooden trees country decorations.
primitive christmas tree decor trees wholesale.
primitive christmas tree decorations country.
primitive christmas tree decor ornaments for sale.
primitive christmas tree antiques decor decorating homes holiday prim country trees angel topper.
primitive christmas tree a nature inspired holiday decor diy ornaments.
primitive christmas tree 6 decorations decor candle lights.
primitive christmas tree ornaments click here for a larger view country decorations ideas.
primitive christmas tree decor pictures of decorated trees ornaments for sale.
primitive christmas tree decor star topper.
primitive christmas tree bowl fillers e pattern pines skirt.
primitive christmas tree homemade ornaments decorating ideas.
primitive christmas tree table or desktop decorated snowman homespun ornament ideas.
primitive christmas tree trees how to make garland country decorations star topper.
primitive christmas tree on decorations how to make garland.
primitive christmas tree fascinating trees for sale garland.
primitive christmas tree large rusty tin ornaments for sale.
primitive christmas tree a sweet country trees decorated.
primitive christmas tree how to decorate a with burlap inspirational ornament fabric trees wholesale.
primitive christmas tree endearing trees for sale 4 angel topper.
primitive christmas tree the bright red boot of and unmistakable are well contrasted with light background dark trees decorated.
primitive christmas tree twig how to make garland.
primitive christmas tree decor how to make garland.
primitive christmas tree picture decorating ideas.


Just like most people who work white-collar jobs in this century, email turned out to be the main communication and productivity tool for me; a daily springboard; a to-do list.
It is both a good friend and a bitter enemy; at times, I'd feel powerless and swamped by the never-ending distraction noise; at others, the ordered . . .


Reports that Newark, New Jersey-based Tweel Home Furnishings has move to a new showroom. Reason behind the compant's move.
Focuses on trends in the kitchen & tabletop products industry in the United States. Animal patterns of table linen manufacturers; Kat-Man-Du collection of Town & Country Living; Product lines of Tweel Home Furnishings.
Lists several showrooms for interior decoration in the United States. Furniture and antiques showrooom of Grey Watkins and Fonthill in New York; Fabrics at Kneedler-Fauchere in Los Angeles, California; Lamp collection of Charles T. Mahew at Pranich in New York and Chicago, Illinois.
The article offers information regarding opening of six new outlets by contemporary home furnishings retailer Bobby Berk Home in the U.S. markets.
Provides information on the Scherping West home furnishings showroom in Belltown, Seattle, Washington. Furniture division; Fabric division.
The article evaluates the Manhattan, New York City, New York showrooms of the home furnishings dealers Newel, DeLorenzo and Fair.
Reports on the expansion of Tweel Home Fashions' table linen line.
Reports on the addition of two licenses to the table linen and kitchen textile lines of United States-based Tweel Home Fashions. Products covered by the licenses.
Reports the licensing deal between textile manufacturer and importer Tweel Home Fashions with Spode and Royal Worcester in New York. Additional business category; Alleviation of department and specialty stores; Production of upscale table linens and kitchen textiles.
Reports that Denise Stoughton has joined Newark, New Jersey-based Tweel Home Furnishings as design director.


text:
The mitochondrial genome in aging and senescence
Andrea Lauri, Giulio Pompilio, Maurizio C. Capogrossi
Istituto Dermopatico dell'Immacolata , IDI
Aging is characterized by a progressive decline in organism functions due to the impairment of all organs. The deterioration of both proliferative tissues in liver, skin and the vascular system, as well as of largely post-mitotic organs, such as the heart and brain could be attributed at least in part to cell senescence.In this review we examine the role of mitochondrial dysfunction and mtDNA mutations in cell aging and senescence. Specifically, we address how p53 and telomerase reverse transcriptase (TERT) activity switch their roles from cytoprotective to detrimental and also examine the role of microRNAs in cell aging. The proposed role of Reactive Oxygen Species (ROS), both as mutating agents and as signalling molecules, underlying these processes is also described.
Ageing Research Reviews
https://doi.org/10.1016/j.arr.2014.07.001
Molecular mechanisms
Senescence
10.1016/j.arr.2014.07.001
Dive into the research topics of 'The mitochondrial genome in aging and senescence'. Together they form a unique fingerprint.
Cytoprotective Chemical Compounds 100%
Proliferative Chemical Compounds 95%
Mitochondrial Genome Medicine & Life Sciences 89%
Signalling Molecule Chemical Compounds 89%
Cellular Senescence Medicine & Life Sciences 78%
Reactive Oxygen Metabolite Chemical Compounds 67%
Mutation Chemical Compounds 60%
Lauri, A., Pompilio, G., & Capogrossi, M. C. (2014). The mitochondrial genome in aging and senescence. Ageing Research Reviews, 18, 1-15. https://doi.org/10.1016/j.arr.2014.07.001
The mitochondrial genome in aging and senescence. / Lauri, Andrea; Pompilio, Giulio; Capogrossi, Maurizio C.
In: Ageing Research Reviews, Vol. 18, 2014, p. 1-15.
Lauri, A, Pompilio, G & Capogrossi, MC 2014, 'The mitochondrial genome in aging and senescence', Ageing Research Reviews, vol. 18, pp. 1-15. https://doi.org/10.1016/j.arr.2014.07.001
Lauri A, Pompilio G, Capogrossi MC. The mitochondrial genome in aging and senescence. Ageing Research Reviews. 2014;18:1-15. doi: 10.1016/j.arr.2014.07.001
Lauri, Andrea ; Pompilio, Giulio ; Capogrossi, Maurizio C. / The mitochondrial genome in aging and senescence. In: Ageing Research Reviews. 2014 ; Vol. 18. pp. 1-15.
@article{7637f521cc21407084fb43121b2cb3f2,
title = "The mitochondrial genome in aging and senescence",
abstract = "Aging is characterized by a progressive decline in organism functions due to the impairment of all organs. The deterioration of both proliferative tissues in liver, skin and the vascular system, as well as of largely post-mitotic organs, such as the heart and brain could be attributed at least in part to cell senescence.In this review we examine the role of mitochondrial dysfunction and mtDNA mutations in cell aging and senescence. Specifically, we address how p53 and telomerase reverse transcriptase (TERT) activity switch their roles from cytoprotective to detrimental and also examine the role of microRNAs in cell aging. The proposed role of Reactive Oxygen Species (ROS), both as mutating agents and as signalling molecules, underlying these processes is also described.",
keywords = "Aging, Mitochondria, Molecular mechanisms, MtDNA, ROS, Senescence",
author = "Andrea Lauri and Giulio Pompilio and Capogrossi, {Maurizio C.}",
doi = "10.1016/j.arr.2014.07.001",
journal = "Ageing Research Reviews",
T1 - The mitochondrial genome in aging and senescence
AU - Lauri, Andrea
AU - Pompilio, Giulio
AU - Capogrossi, Maurizio C.
N2 - Aging is characterized by a progressive decline in organism functions due to the impairment of all organs. The deterioration of both proliferative tissues in liver, skin and the vascular system, as well as of largely post-mitotic organs, such as the heart and brain could be attributed at least in part to cell senescence.In this review we examine the role of mitochondrial dysfunction and mtDNA mutations in cell aging and senescence. Specifically, we address how p53 and telomerase reverse transcriptase (TERT) activity switch their roles from cytoprotective to detrimental and also examine the role of microRNAs in cell aging. The proposed role of Reactive Oxygen Species (ROS), both as mutating agents and as signalling molecules, underlying these processes is also described.
AB - Aging is characterized by a progressive decline in organism functions due to the impairment of all organs. The deterioration of both proliferative tissues in liver, skin and the vascular system, as well as of largely post-mitotic organs, such as the heart and brain could be attributed at least in part to cell senescence.In this review we examine the role of mitochondrial dysfunction and mtDNA mutations in cell aging and senescence. Specifically, we address how p53 and telomerase reverse transcriptase (TERT) activity switch their roles from cytoprotective to detrimental and also examine the role of microRNAs in cell aging. The proposed role of Reactive Oxygen Species (ROS), both as mutating agents and as signalling molecules, underlying these processes is also described.
KW - Aging
KW - Mitochondria
KW - Molecular mechanisms
KW - MtDNA
KW - ROS
KW - Senescence
U2 - 10.1016/j.arr.2014.07.001
DO - 10.1016/j.arr.2014.07.001
JO - Ageing Research Reviews
JF - Ageing Research Reviews


5. New car costs £800, as opposed to 250 before.ouch. How to get some ot that back? Car club: 10/month for each member( there cant be more than six or seven members). Forest will be a member and gets priority. Whoever wrecks it pays to get it fixed and forest pays for wear&tear.
10. Gareth demands a check book and he will get it.


text:
NTUC Fairprice staff go the extra mile to help elderly lady injured in a fall
Patricia Siswandjo
Share this article: Share Tweet Telegram Email
She was helpless, alone, and bleeding profusely.
But thankfully for octogenarian 'Auntie Lily', kind NTUC Fairprice staff were on the scene to offer her assistance.
On Oct 13, disaster struck when Facebook user Sim Cher Guan's 81-year-old mother, known affectionately as Auntie Lily on his Facebook page, tripped.
She was making her way up the stairs near her home in Toa Payoh when she fell and suffered a deep cut on her chin. She began bleeding profusely from her wound.
In a Facebook post, Sim wrote that kind strangers quickly offered her assistance: "Two kind Indian passersby helped her up and offered her a box of tissue to stop her bleeding."
However, Auntie Lily was at a loss as to what to do from there. She was alone and did not have her handphone with her.
Despite the excruciating pain, she made the decision to head back towards HDB Hub to catch a taxi to Tan Tock Seng Hospital.
Sim wrote: "She must have been a sight, with her blood-soaked blouse and pants."
Thankfully, help came soon.
"As she was passing by the outside of NTUC Fairprice at HDB Hub, the staff personnel saw her blood-stained state and rushed out to ask her if she needed help."
"They then brought her to the office and administered first aid on her gash and to clean her up. But unfortunately, that didn't stop the bleeding as the cut was far too deep," Sim wrote.
"They next asked if they should call an ambulance for her, to which she refused as she felt it wasn't serious enough to warrant that."
Once a drug addict, gambler and philanderer, he turns his life around after six stints in prison
Feature | Oct 01, 2019
Good Samaritans rush to help elderly woman who fell down at the MRT station
News | Sep 26, 2019
He added that the concerned staff didn't give up, and insisted that Auntie Lily head to a nearby clinic to get her wound checked out. "But she was at a loss as it was Sunday and she wasn't sure which of the clinics would be opened," Sim explained. "The staff then went about finding out and succeeded in locating one nearby at Toa Payoh Central."
Auntie Lily then made her way to the clinic, and succeeded in getting the deep gash on her chin stitched up.
Ending the post with a note of gratitude, Sim wrote: "I want to record my heartfelt thanks to the staff of Fairprice NTUC for helping my mum on that fateful Sunday afternoon; and for making her feel comforted despite the harrowing experience. This kind gesture is very much appreciated by my family."
He also tagged the CEO of NTUC Fairprice and Member of Parliament, Seah Kian Peng, and added: "Thought you may like to know about this and how great the staff at Fairprice was!"
The act of kindness by the NTUC Fairprice's staff struck a chord with netizens. Sim's Facebook post has been shared over 80 times, and flooded with kind comments.
One Ashwani Sharma wrote: "A gracious society of helpful people. Accidents do happen and we must do our part. Wishing her a very speedy recovery."
Another, Angie Chong left her well-wishes and added: "Thank goodness for those kind-hearted people."
Seah even replied: "Sorry to hear about this incident and I hope your mom is feeling much better now; thanks for your kind compliments and NTUC Fairprice is indeed blessed to have staff like whom your mom encountered."
He continued: "One of our service motto is service from the heart; to be empathetic and to be helpful. I will pass on your compliments to the store manager and the team at our Toa Payoh HDB Hub store. Take care and best wishes to your mom and all in the family."
Top Image: Shutterstock / Tang Yan Song
We know not to abuse animals, but is it possible to be "too kind" to them?
News | Jan 18, 2021
Looking on the bright side of a gloomy start to 2021
Last Christmas, I gave… my neighbours a cake!
Your Say | Jan 05, 2021
Little gestures of kindness on a "cruise to nowhere" made my trip memorable
Learning Hokkien reminded me of the importance of never forgetting where you came from
Feature | Jan 10, 2021
Join our mailing list to receive round-ups of our latest stories.
By submitting this form, you are granting Singapore Kindness Movement permission to email you. For details, see our Privacy Policy.
The Pride is a Singapore-based publication that aims to highlight good news and inspirational stories, and discuss social issues and current affairs that are important to the local community.
© 2021 The Pride. All rights reserved.


Home › News + Views › "It's not in the food, so you have to eat these vitamins…"
"It's not in the food, so you have to eat these vitamins…"
So what you are basically telling me is that mankind can send a rover to Mars, build and detonate nuclear bombs, break the sound barrier, etc. Our global annual military spending tops $1.2 trillion, but nobody can figure out how to grow real produce; therefore, there is no real produce to eat.; but you are looking for a cure for all of these diseases… and in the mean time, I can't find anything healthy to eat! Come on folks, everyone knows the soil is over-used, depleted and dead… that the fertilizers are toxic… and the water used to irrigate our crops is heavily polluted.
It is not in the food, well that's half of the story… the organic plant-based minerals are not there (the plants cannot convert inorganic minerals into organic plant based minerals), but there is something in there… inorganic minerals. This plethora of inorganic minerals (in conjunction with the lack of fulvic, humic, and ulmic electrolytes) in the produce we consume impede voltage gated ion channels in the body and brain.To add insult to injury, there also are over 45 different types of inorganic calcium and over 38 different types of inorganic potassium laced in many of the foods we consume. Inorganic calcium and potassium are magnesium antagonists, which is one of the main reasons why 90% of the population is magnesium bicarbonate deficient. As a complex hydrated electrolyte salt, magnesium bicarbonate is more important than calcium, sodium, potassium, and chloride bicarbonates, as it regulates all of them.
Bicarbonate salts are composed of bicarbonate ions (HCO3) paired with magnesium, calcium, sodium, potassium, and chloride hydroxides. Magnesium is not easily absorbed in the body unless first attached to a transporting substance i.e. a bicarbonate ion and in its natural transporting medium: water.
Magnesium bicarbonate is a complex hydrated salt only found in liquid form, it is naturally present in pristine drinking water, it is not found in any foods. Prior to the industrial revolution, when food was food, there were 84 organic plant based minerals in the foods we ate and bicarbonate salts in the water we drank. I It is impossible to get magnesium bicarbonate through eating food.
This plethora of inorganic minerals in the food and produce we consume also calcify (corpora arenacea or brain sand) the main processor in the brain, the pineal gland. A total of 20 glands from human subjects ranging in age from 15 to 68 years were studied. Brain sand was found in every gland. Concentrations of "brain sand" are said to increase with age. Pineal calcification is so widely accepted that it is considered a natural consequence of aging!
Chemical analysis shows that the micro-crystals in the pineal gland are composed of hydroxy apatite (inorganic calcium phosphate, calcium carbonate, magnesium phosphate, and ammonium phosphate, which are all used in modern monoculture).
The hydroxy apatite micro-crystals happen to be a magnet for fluoride… pineal impairment makes you passive and docile. The high fluoride levels in the pineal are presumably due to the large surface area of the hydroxy apatite crystallites both intra- and extracellularly. In addition, the pineal has a profuse blood flow and high capillary density; pineal blood flow is second only to the kidney. The human pineal gland contains more fluoride than any other normal soft tissue.
The effects of a calcified/fluoridated pineal gland and electrolyte aberrations include: disorientation, brain fog, memory loss, depression, hormonal dysregulation, sleep disturbance, hypoglycemia, toxicity, temperature dysregulation, thick blood, decreased pain thresholds, fatigue, phosphate and calcium accumulation, and decreased melatonin production; it basically makes people mentally challenged.
To add fuel to the fire, when inorganic minerals are ingested (in food and/or hard water) a condition known as leukocytosis occurs within the body in thirty minutes to three hours after consuming them. Leukocytosis (a proliferation of white blood cells) is the body's first line of defense against foreign and harmful body substances. Food should contain 84 organic plant based minerals and water should contain bicarbonate salts, not hard water loaded with inorganic minerals. Indeed, we begin to wonder, if contaminated hard acidic water and modern agriculture are two of the main keys to everything wrong with modern civilization.
When food-bearing plants grew in a natural ecosystem, with pristine water and soil… nothing was added and nothing lost, not one blade of grass, not one feces or urination went to waste: it was a perfect orchestration of God's creation... "The Story of Food"
Today, as a result of burning fossil fuel, each year the global atmosphere is on the receiving end of 20 billion tons of carbon dioxide, 130 million tons of sulfur dioxide, 97 million tons of hydrocarbons, 53 million tons of nitrogen oxides, more than three million tons of arsenic, cadmium, lead, mercury, nickel, zinc and other toxic metals, and a host of synthetic and organic compounds, and other toxins. Then we pull everything out of the tilled farm soil… and flush it down the toilet!
Unfortunately, there are no replacements for natural living food or pristine water. All naturally occurring nutrients in food and water were at optimal, relative, and quantum ratios. Only a land plant, when the biogeochemical cycles are intact, can convert an inorganic mineral to a useable form: an organic plant based mineral. If you took all of the scientists and chemists in the world, they could not recreate plant based minerals. There are 84 organic plant based minerals… and they are the foundation of human health. Fractionated and/or synthetic: vitamins, minerals, amino acids, and essential fatty acids are not replacements for natural foods.
Vitamins without plant-based minerals are of little value and are quickly eliminated from the body and every chemical reaction in the body requires enzymes, and enzymes are dependent on organic plant based minerals (the only thing that will catalyze or activate an enzyme is a mineral).
In a nutshell, you can have all the air, water, protein, carbohydrates, fats, and vitamins you want, but you won't be a fully functioning organism without a complete balance of minerals. Without minerals all the other components of the body will be unable to function properly. To add insult to injury: Vine Ripened Food is at its peak nutritional value for four hours.
Here are just a few of the ways minerals interact. If you think your multi-vitamins and isolated nutrients can compete with nature…please think again.
Vitamins, minerals, and fatty acids taken out of context will antagonize other vitamins, minerals and fatty acids. For example: vitamin A antagonizes vitamin D, and the calcium response to vitamin D; vitamin D will antagonize calcium; inorganic calcium and potassium antagonize magnesium; vitamin E antagonizes other essential fatty acids, and vitamins A and K; vitamin C antagonizes vitamin K and copper; when you knock out copper, you cannot convert progesterone to testosterone and estrogen.
Most vitamins in supplements are petroleum extracts, coal tar derivatives, and/or chemically processed sugar (plus sometimes industrially processed fish oils), with other acids and industrial chemicals (such as formaldehyde) used to process them. Vitamins found in any real food are chemically and structurally different from those commonly found in "natural vitamin" formulas.
The consumption of amino acids tampers with the hormonal and chemical processes in the body. Isolated amino acids have been linked to skin and blood disorders, vomiting, respiratory problems, seizures, drowsiness, brain-damage, and altering blood sugar levels, leading to a hypoglycemic seizures. Protein Powders are a highly processed food supplements that are depleted of all vital life-forces; they must be refined so they have a long, stable shelf-life.
Since 2005, Glen Caulkins has been developing the LivePristine™ Complete Health Protocol. The protocol is just that, we do not make you choose from hundreds of items to know what you need, we present a clear and easy to follow program that can fit into anyone's lifestyle!
Step 1: PristineHydro™ Water - Water is by far the most important nutrient. You are composed of about 70% water… so the journey obviously starts here! When it comes to water, purity is everything. There should be no acceptable limit for the contaminants and pollutants in your water and it should be free of all invasive acid compounds. We are the only system that produces water that is 100% free of undesirable acids and contaminants and is properly mineralized. Our patent pending Water Revival Systems removes what traditional filtration systems leave behind while also delivering essential beneficial ions such as magnesium bicarbonate and silica. This mineralized water is then restructured and recharged with lodestones and quartz crystals to emulate water produced by nature.
All consumed water, from what you drink to what you use for food prep and cooking, should be pristine. So, in order to get the most of your system and avoid ingesting the contaminants and pollutants present in most water, be sure to use PristineHydro™ water for all your water needs. Your coffee, tea, soup, and even the water used to boil food should all be pristine!
Step 2: Electrolyte Balance™, does just what it says, it helps balance your alkaline electrolytes, i.e. magnesium, calcium, potassium, and sodium bicarbonates while also delivering silicic acid, a bio-available form of silica. It is speculated that over 80% of Americans are magnesium deficient; as an electrolyte salt, magnesium bicarbonate is most important because it regulates all of the other electrolytes. Electrolyte Balance™ is also used to help buffer excess acids in the body which have accumulated over the years from drinking polluted and/or acidic water.
Drink PristineHydro™ water and take Electrolyte Balance™ every day for approximately one month (some people are more acidic than others), before moving on to Step 3. In some cases of severe metabolic acidosis (acid reflux, gout, excess weight, etc.) many people find adding a half of teaspoon of aluminum free baking soda once or twice a day to their Electrolyte Balance™ is helpful until symptoms subside. Please note, we do not advise taking sodium bicarbonate on a permanent basis, as it could cause sodium poisoning. (Check with a knowledgeable Holistic Doctor for details).
Step 3: Shilajit – Once the acid problem is under control, you can safely add Shilajit to your diet. Shilajit has over 84 organic plant derived minerals as well as fulvic, humic, and ulmic acids (good acids). Consuming Shilajit with excess bad acids in the body could exacerbate existing metabolic acidosis. When consumed correctly Shilajit, can live up to its Ayurveda Medicine translation, "the panacea, the cure all," which held that if a disease was detected in time, there was nothing that Shilajit could not cure.
Recommend use: Glen's morning ritual (Super-Broth) includes consuming shilajit with warm grass-fed beef bone broth with extra fat from FatWorks, Himalayan salt, and cayenne pepper. Two to three times a week, Glen prepares his Nectar of Eternal Youth meal replacement which is a powerful formula consisting mainly of shilajit, royal jelly, bee pollen, raw honey, etc. blended into a smoothie with raw goat milk or made into a bowl with yogurt, cottage cheese, and Chyawanprash. For those who want a quick boost, we have a concentrated formula called Antidote – The Ideal Superfood™ that can be consumed straight up with no production.
Step 4: Earthing – Get a grounding sheet, some lodestones, and spend time outside barefoot! It's no surprise that we feel great after a day at the beach or spending time at the park. The reason for this, is that the Earth is a six-sextillion ton magnet and source of pulsed field direct current voltage, with its particle wave field extending for thousands of miles into space. Furthermore, the soles of our feet contain nerve endings that connect to every other part of our body. When our bare feet touch the ground, we receive and convey the Telluric or Natural Earth Currents. This voltage powers the human body; in essence, we are rechargeable batteries and the Earth is a biologically correct source of energy.
All biological life forms, including humans, require continued contact with natural magneto-electricity, which governs us all for natural health maintenance. Biological life cannot exist in full health without this connection. Optimal health is dependent upon regular connection and contact with these natural Earth currents.
Step 5: Bodywork – This one is up to you! We can offer you all the most advanced consumable products, but to truly achieve maximum health regular bodywork is essential. The opposite can also be said as well, great bodywork must have a body free of underlying problems to see desired lasting results.
As much as we understand nutrition, our history with bodywork extends back even further. PristineWellness has its origins from the "GC Life Center 4 Health." This is where Glen Caulkins developed the GC Method; his own bodywork, myofascial release, and chiropractic protocol. Glen's extensive understanding of minerals, mineral antagonists, and secondary mineral deficiencies, as well as his understanding of how pollution, intensive farming, and irresponsible agricultural practices have affected tissue quality and impaired the body's ability to regenerate quality tissue.
So find a good massage therapist and a chiropractic clinic in your area and go regularly. Establish a regular stretching / yoga routine is essential for your overall health.


"MISSION: IMPOSSIBLE – ROGUE NATION | Watch Full Trailer Online / Adv. Tickets on Sale"
Paramount Pictures today announced that tickets for the first showings of the highly anticipated film "MISSION: IMPOSSIBLE – ROGUE NATION" are unlocked with today's trailer debut and on sale now – four months before the film's theatrical release.
The advance tickets are available for Thursday, July 30th showings at 7:00 p.m. in IMAX® and premium large format theaters and 8:00 p.m. at additional participating locations nationwide. The tickets are available online at Fandango, Movietickets.com and participating theater box offices.
Starting tomorrow, Tuesday, March 24th through Friday, March 27th, fans purchasing advance tickets at Fandango and Movietickets.com will receive a code for a free HD digital copy of any previous installment in the blockbuster "MISSION: IMPOSSIBLE" franchise.
"MISSION: IMPOSSIBLE – ROGUE NATION" reunites Tom Cruise with "MISSION: IMPOSSIBLE – GHOST PROTOCOL" stars Jeremy Renner, Simon Pegg and Ving Rhames. The film also stars Rebecca Ferguson, Sean Harris and Alec Baldwin.


Leaf through the Halfen-Catalogue - always and everywhere.
Additional to the website twocream developed a Catalogue App for HALFEN.
Intuitive user guidance, brilliant images due to Retina-Displays and much more. The "HALFEN Catalogues" App makes the access to detailed product information, e.g. catalogues, licences, assembly instructions, project reports and prices, much easier.
Get quick results with the help of this App. Are you interested in a specific product? Or do you just want to leaf through the HALFEN brochures?
Via gesture command you get to your target very easy and move intuitive through the catalogue. All this in pocket size.
The HALFEN Catalogues App was developed cross-platform. The App gets its genes for iOS or Android in the last stage of development. That minimizes the development costs and future adjustments do not terrify anymore.
If sometimes you do not have a connection to the internet: All products are available in the product catalogue and are linked with other information such as dimensional drawings and technical product information.
An ingenious product search provides the right and impressively fast result, of course offline.