diff --git a/Data/Data_Achievements.pas b/Data/Data_Achievements.pas index 0ad864f..b94bd93 100644 --- a/Data/Data_Achievements.pas +++ b/Data/Data_Achievements.pas @@ -22,8 +22,8 @@ TAchievement = record description: 'Complete a campaign mission or a match of multiplayer.'; image: 'https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6fb6ed832c24c8e0594c13cb8a7b08ac28b8d603.jpg'; percent_achieved: '90.3%'; - Gamerscore: -1; - Guide_Description: ''; + Gamerscore: 5; + Guide_Description: 'To unlock the "Your Journey Begins" achievement within the Halo: The Master Chief Collection (MCC), you simply need to fully complete any campaign mission or a match of multiplayer.'; Guide_Video: []; Filter: ['Campaign','Co-op Campaign','Multiplayer']; ), @@ -32,8 +32,8 @@ TAchievement = record description: 'Kill 100 enemies or players.'; image: 'https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/295994d6837f319474877fac6036b13bcc09e7cc.jpg'; percent_achieved: '80.0%'; - Gamerscore: -1; - Guide_Description: ''; + Gamerscore: 5; + Guide_Description: 'To unlock the "Just Getting Started" achievement within the Halo: The Master Chief Collection (MCC), you simply need to kill a total of 100 enemies or players in any campaign mission or a match of multiplayer.'; Guide_Video: []; Filter: ['Campaign','Co-op Campaign','Multiplayer']; ), diff --git a/HaloTracker_Web.dproj b/HaloTracker_Web.dproj index 12d3c6b..437d265 100644 --- a/HaloTracker_Web.dproj +++ b/HaloTracker_Web.dproj @@ -1613,6 +1613,7 @@ True False + False 12 diff --git a/Pages/uAchievements.dfm b/Pages/uAchievements.dfm index e33de42..477040d 100644 --- a/Pages/uAchievements.dfm +++ b/Pages/uAchievements.dfm @@ -48,6 +48,7 @@ object Frame_Achievements: TFrame_Achievements Font.Height = -19 Font.Name = 'Segoe UI' Font.Style = [] + HeightStyle = ssAuto HeightPercent = 100.000000000000000000 Layout = tlCenter ParentFont = False diff --git a/Pages/uAchievements.pas b/Pages/uAchievements.pas index 235eadd..d4a2fa2 100644 --- a/Pages/uAchievements.pas +++ b/Pages/uAchievements.pas @@ -184,7 +184,10 @@ procedure TFrame_Achievements.LoadAchievementGuide(Sender: TJSEvent); window.dispatchEvent(new Event('resize')); end; - AchievementGuideVideo.HTML.Text := ''; + if (Length(Achievement.Guide_Video) > 0) then + AchievementGuideVideo.HTML.Text := '' + else + AchievementGuideVideo.HTML.Text := ''; end; end; @@ -361,7 +364,7 @@ procedure TFrame_Achievements.LoadAchievementsHTML; MyHTML := '''
Halo Achievement - ${AchievementName} (${AchievementDescription}) -
+

${AchievementName}

${AchievementDescription}

diff --git a/Pages/uSettings.dfm b/Pages/uSettings.dfm index 3ff6f1d..2b780a8 100644 --- a/Pages/uSettings.dfm +++ b/Pages/uSettings.dfm @@ -245,7 +245,7 @@ object Frame_Settings: TFrame_Settings Margins.Right = 0 Margins.Bottom = 0 Align = alClient - Caption = 'Version 1.0.4 | WEB | RELEASE | 2024/04/02' + Caption = 'Version 1.0.5 | WEB | RELEASE | 2024/04/03' Font.Charset = DEFAULT_CHARSET Font.Color = clWhite Font.Height = -14 diff --git a/TMSWeb/Release/HaloTracker_Web.js b/TMSWeb/Release/HaloTracker_Web.js index b4b3121..071a89f 100644 --- a/TMSWeb/Release/HaloTracker_Web.js +++ b/TMSWeb/Release/HaloTracker_Web.js @@ -1 +1 @@ -var pas={$libimports:{}},rtl={version:20301,quiet:!1,debug_load_units:!1,debug_rtti:!1,$res:{},debug:function(){!rtl.quiet&&console&&console.log&&console.log(arguments)},error:function(e){throw rtl.debug("Error: ",e),e},warn:function(e){rtl.debug("Warn: ",e)},checkVersion:function(e){if(rtl.version!=e)throw"expected rtl version "+e+", but found "+rtl.version},hiInt:Math.pow(2,53),hasString:function(e){return rtl.isString(e)&&e.length>0},isArray:function(e){return Array.isArray(e)},isFunction:function(e){return"function"==typeof e},isModule:function(e){return rtl.isObject(e)&&rtl.hasString(e.$name)&&pas[e.$name]===e},isImplementation:function(e){return rtl.isObject(e)&&rtl.isModule(e.$module)&&e.$module.$impl===e},isNumber:function(e){return"number"==typeof e},isObject:function(e){return"object"==typeof e&&null!=e},isString:function(e){return"string"==typeof e},getNumber:function(e){return"number"==typeof e?e:NaN},getChar:function(e){return"string"==typeof e&&1===e.length?e:""},getObject:function(e){return"object"==typeof e||"function"==typeof e?e:null},isTRecord:function(e){return rtl.isObject(e)&&e.hasOwnProperty("$new")&&"function"==typeof e.$new},isPasClass:function(e){return rtl.isObject(e)&&e.hasOwnProperty("$classname")&&rtl.isObject(e.$module)},isPasClassInstance:function(e){return rtl.isObject(e)&&rtl.isPasClass(e.$class)},hexStr:function(e,t){return("000000000000000"+e.toString(16).toUpperCase()).slice(-t)},m_loading:0,m_loading_intf:1,m_intf_loaded:2,m_loading_impl:3,m_initializing:4,m_initialized:5,module:function(e,t,i,a){rtl.debug_load_units&&rtl.debug('rtl.module name="'+e+'" intfuses='+t+" impluses="+a),rtl.hasString(e)||rtl.error('invalid module name "'+e+'"'),rtl.isArray(t)||rtl.error('invalid interface useslist of "'+e+'"'),rtl.isFunction(i)||rtl.error('invalid interface code of "'+e+'"'),null==a||rtl.isArray(a)||rtl.error('invalid implementation useslist of "'+e+'"'),pas[e]&&rtl.error('module "'+e+'" is already registered');var n=Object.create(rtl.tSectionRTTI),s=n.$module=pas[e]={$name:e,$intfuseslist:t,$impluseslist:a,$state:rtl.m_loading,$intfcode:i,$implcode:null,$impl:null,$rtti:n};a&&(s.$impl={$module:s,$rtti:n})},exitcode:0,run:function(e){try{rtl.hasString(e)||(e="program"),rtl.debug_load_units&&rtl.debug('rtl.run module="'+e+'"'),rtl.initRTTI();var t=pas[e];if(t||rtl.error('rtl.run module "'+e+'" missing'),rtl.loadintf(t),rtl.loadimpl(t),"program"==e||"library"==e){rtl.debug_load_units&&rtl.debug("running $main");var i=pas[e].$main();rtl.isNumber(i)&&(rtl.exitcode=i)}}catch(e){if(!rtl.showUncaughtExceptions)throw e;rtl.handleUncaughtException(e)||(rtl.showException(e),rtl.exitcode=216)}return rtl.exitcode},showException:function(e){var t=rtl.hasString(e.$classname)?e.$classname:"";t+=(t?": ":"")+(e.hasOwnProperty("fMessage")?e.fMessage:e),alert("Uncaught Exception : "+t)},handleUncaughtException:function(e){if(!rtl.onUncaughtException)return!1;try{return rtl.onUncaughtException(e),!0}catch(e){return!1}},loadintf:function(e){e.$state>rtl.m_loading_intf||(rtl.debug_load_units&&rtl.debug('loadintf: "'+e.$name+'"'),e.$state===rtl.m_loading_intf&&rtl.error('unit cycle detected "'+e.$name+'"'),e.$state=rtl.m_loading_intf,rtl.loaduseslist(e,e.$intfuseslist,rtl.loadintf),rtl.debug_load_units&&rtl.debug('loadintf: run intf of "'+e.$name+'"'),e.$intfcode(e.$intfuseslist),e.$state=rtl.m_intf_loaded)},loaduseslist:function(e,t,i){if(null!=t)for(var a=t.length,n=0;n=rtl.m_loading_impl||(e.$state0?this[a](e,t):o?new this.$func(t):Object.create(r)).$init&&i.$init();try{"string"==typeof e?this[e].apply(i,t):e.apply(i,t),i.AfterConstruction&&i.AfterConstruction()}catch(e){throw i.Destroy&&i.Destroy(),i.$final&&i.$final(),e}return i},r.$destroy=function(e){this.BeforeDestruction&&this.BeforeDestruction(),this[e]&&this[e](),this.$final&&this.$final()},rtl.initClass(r,e,t,n,s),o){function l(){}l.prototype=r,r.$func=l}},createHelper:function(e,t,i,a,n){var s=null;null!=i?(s=Object.create(i)).$ancestor=i:s={$ancestor:null},e[t]=s,s.$class=s,s.$classname=n||t,e=rtl.initStruct(s,e,t),s.$fullname=e.$name+"."+t;var o=s.$module.$rtti.$Helper(s.$classname,{helper:s});s.$rtti=o,rtl.isObject(i)&&(o.ancestor=i.$rtti),o.ancestor||(o.ancestor=null),a.call(s)},tObjectDestroy:"Destroy",free:function(e,t){if(null==e[t])return null;e[t].$destroy(rtl.tObjectDestroy),e[t]=null},freeLoc:function(e){return null==e||e.$destroy(rtl.tObjectDestroy),null},hideProp:function(e,t,i){Object.defineProperty(e,t,{enumerable:!1,configurable:!0,writable:!0}),arguments.length>2&&(e[t]=i)},recNewT:function(e,t,i,a){var n={};e&&(e[t]=n);var s=rtl.hideProp;return a&&(rtl.initStruct(n,e,t),n.$record=n,s(n,"$record"),s(n,"$name"),s(n,"$parent"),s(n,"$module"),s(n,"$initSpec")),i.call(n),n.$new||(n.$new=function(){return Object.create(n)}),n.$clone=function(e){return n.$new().$assign(e)},s(n,"$new"),s(n,"$clone"),s(n,"$eq"),s(n,"$assign"),n},is:function(e,t){return t.isPrototypeOf(e)||e===t},isExt:function(e,t,i){return null!=e&&(("object"==typeof t||"function"==typeof t)&&(e===t?1!==i&&(2!==i||rtl.isPasClass(e)):t.isPrototypeOf&&t.isPrototypeOf(e)?1===i?rtl.isPasClassInstance(e):2!==i||rtl.isPasClass(e):"function"==typeof t&&e instanceof t))},Exception:null,EInvalidCast:null,EAbstractError:null,ERangeError:null,EIntOverflow:null,EPropWriteOnly:null,raiseE:function(e){var t=rtl[e];if(null==t){var i=pas.SysUtils;i||(i=pas.sysutils),i&&((t=i[e])||(t=i[e.toLowerCase()]),t||(t=i.Exception),t||(t=i.exception))}if(t){if(t.Create)throw t.$create("Create");if(t.create)throw t.$create("create")}if("EInvalidCast"===e)throw"invalid type cast";if("EAbstractError"===e)throw"Abstract method called";if("ERangeError"===e)throw"range error";throw e},as:function(e,t){if(null===e||rtl.is(e,t))return e;rtl.raiseE("EInvalidCast")},asExt:function(e,t,i){if(null===e||rtl.isExt(e,t,i))return e;rtl.raiseE("EInvalidCast")},createInterface:function(e,t,i,a,n,s){var o=n?Object.create(n):{};if(e[t]=o,o.$module=e,o.$name=t,o.$fullname=e.$name+"."+t,o.$guid=i,o.$guidr=null,o.$names=a||[],rtl.isFunction(s)){rtl.debug_rtti&&rtl.debug("createInterface "+o.$fullname);var r=o.$module.$rtti.$Interface(t,{interface:o,module:e});o.$rtti=r,n&&(r.ancestor=n.$rtti),r.ancestor||(r.ancestor=null),s.call(o)}return o},strToGUIDR:function(e,t){var i=0;function a(t){var a=e.substr(i,t);return i+=t,parseInt(a,16)}i+=1,t.D1=a(8),i+=1,t.D2=a(4),i+=1,t.D3=a(4),i+=1,t.D4||(t.D4=[]),t.D4[0]=a(2),t.D4[1]=a(2),i+=1;for(var n=2;n<8;n++)t.D4[n]=a(2);return t},guidrToStr:function(e){if(e.$intf)return e.$intf.$guid;for(var t=rtl.hexStr,i="{"+t(e.D1,8)+"-"+t(e.D2,4)+"-"+t(e.D3,4)+"-"+t(e.D4[0],2)+t(e.D4[1],2)+"-",a=2;a<8;a++)i+=t(e.D4[a],2);return i+="}"},createTGUID:function(e){var t=pas.System?pas.System.TGuid:pas.system.tguid;return rtl.strToGUIDR(e,t.$new())},getIntfGUIDR:function(e){if(!e)return null;if(!e.$guidr){var t=rtl.createTGUID(e.$guid);e.hasOwnProperty("$guid")||(e=Object.getPrototypeOf(e)),t.$intf=e,e.$guidr=t}return e.$guidr},addIntf:function(e,t,i){function a(e){return"function"==typeof e?function(){return e.apply(this.$o,arguments)}:function(){rtl.raiseE("EAbstractError")}}i||(i={});var n=t,s=Object.create(n);e.hasOwnProperty("$intfmaps")||(e.$intfmaps={}),e.$intfmaps[t.$guid]=s;do{var o=n.$names;if(!o)break;for(var r=0;r=-9007199254740991&&e<=9007199254740991)return e;rtl.raiseE("EIntOverflow")},rc:function(e,t,i){if(Math.floor(e)===e&&e>=t&&e<=i)return e;rtl.raiseE("ERangeError")},rcc:function(e,t,i){if("string"==typeof e&&1===e.length){var a=e.charCodeAt(0);if(a>=t&&a<=i)return e}rtl.raiseE("ERangeError")},rcSetCharAt:function(e,t,i){return("string"!=typeof e||t<0||t>=e.length)&&rtl.raiseE("ERangeError"),rtl.setCharAt(e,t,i)},rcCharAt:function(e,t){return("string"!=typeof e||t<0||t>=e.length)&&rtl.raiseE("ERangeError"),e.charAt(t)},rcArrR:function(e,t){if(Array.isArray(e)&&"number"==typeof t&&t>=0&&t2){e=e[t];for(var i=2;i=0&&t0&&(m=(c=a[l-1]).src&&c.src.length>c.i?c.src[c.i]:null),m?m.$pas2jsrefcnt>0||l>=n?(d=[],u=p=m.length):(p=0,u=(d=m).length):(d=[],p=0,u=0),h=a[l].dim,d.length=h,!(l>0&&(c.a[c.i]=d,c.i++,0===h&&c.i0){if(lh&&(p=h),rtl.isArray(t)){for(s=0;s0&&a[l-1].i>=a[l-1].dim;)l--;if(0===l)return 0===r?d:a[0].a}},arrayEq:function(e,t){if(null===e)return null===t;if(null===t)return!1;if(e.length!==t.length)return!1;for(var i=0;it.length&&(n=t.length),i>=n)return[];if(0===e)return t.slice(i,n);var s=[];return s.length=n-i,rtl.arrayClone(e,t,i,n,s,0),s},arrayInsert:function(e,t,i){return t?(t.splice(i,0,e),t):[e]},setCharAt:function(e,t,i){return e.substr(0,t)+i+e.substr(t+1)},getResStr:function(e,t){var i=e.$resourcestrings[t];return i.current?i.current:i.org},createSet:function(){for(var e={},t=0;tt)return e.substring(0,t);if(e.repeat)return e+" ".repeat(t-i);for(;i=t)return e;if(e.repeat)return" ".repeat(t-i)+e;for(;i2)return rtl.spaceLeft(e.toFixed(i),t);var a="",n=Math.abs(e);n>1&&n<1e10||n>1e-10&&n<1?a="00":(n>1&&n<1e100||n<1e-10)&&(a="0"),arguments.length<2?t=24:t<9&&(t=9);i=t-8;var s=(e>0?" ":"")+e.toExponential(i);return s=s.replace(/e(.)/,"E$1"+a),rtl.spaceLeft(s,t)},valEnum:function(e,t,i){for(var a in e=e.toLowerCase(),t)if("string"==typeof a&&a.toLowerCase()===e)return i(0),t[a];return i(1),0},lw:function(e){return e<0?e+4294967296:e},and:function(e,t){var i=2147483648;return(e/i&t/i)*i+(2147483647&e&t)},or:function(e,t){var i=2147483648;return(e/i|t/i)*i+(2147483647&e|2147483647&t)},xor:function(e,t){var i=2147483648;return(e/i^t/i)*i+(2147483647&e^2147483647&t)},shr:function(e,t){return e<0&&(e+=rtl.hiInt),e<2147483648?e>>t:t<=0?e:t>54?0:Math.floor(e/Math.pow(2,t))},shl:function(e,t){if(e<0&&(e+=rtl.hiInt),t<=0)return e;if(t>54)return 0;var i=e*Math.pow(2,t);return i<=rtl.hiInt?i:i%rtl.hiInt},initRTTI:function(){function e(e,t,i){i||(i=rtl.tTypeInfo),rtl.debug_rtti&&rtl.debug('initRTTI.newBaseTI "'+e+'" '+t+' ("'+i.name+'")');var a=Object.create(i);return a.name=e,a.kind=t,rtl[e]=a,a}function t(t,i,a,n){var s=e(t,1,rtl.tTypeInfoInteger);return s.minvalue=i,s.maxvalue=a,s.ordtype=n,s}function i(e,t){var i=Object.create(rtl.tTypeMember);i.name=e,i.kind=t,rtl[e]=i}rtl.debug_rtti&&rtl.debug("initRTTI"),rtl.tTypeInfo={name:"tTypeInfo",kind:0,$module:null,attr:null},e("tTypeInfoInteger",1),t("shortint",-128,127,0),t("byte",0,255,1),t("smallint",-32768,32767,2),t("word",0,65535,3),t("longint",-2147483648,2147483647,4),t("longword",0,4294967295,5),t("nativeint",-4503599627370496,0xfffffffffffff,6),t("nativeuint",0,0xfffffffffffff,7),e("char",2),e("string",3),e("tTypeInfoEnum",4,rtl.tTypeInfoInteger),e("tTypeInfoSet",5),e("double",6),e("boolean",7),e("tTypeInfoProcVar",8),e("tTypeInfoMethodVar",9,rtl.tTypeInfoProcVar),e("tTypeInfoArray",10),e("tTypeInfoDynArray",11),e("tTypeInfoPointer",15),e("pointer",15,rtl.tTypeInfoPointer).reftype=null,e("jsvalue",16),e("tTypeInfoRefToProcVar",17,rtl.tTypeInfoProcVar),rtl.tTypeMember={attr:null},i("tTypeMemberField",1),i("tTypeMemberMethod",2),i("tTypeMemberProperty",3),rtl.tTypeMembers={};var a=e("tTypeInfoStruct",0);a.$addMember=function(e,t,i){if(rtl.debug_rtti){if(!rtl.hasString(e)||"$"===e.charAt())throw'invalid member "'+e+'", this="'+this.name+'"';if(!rtl.is(t,rtl.tTypeMember))throw'invalid ancestor "'+t+":"+t.name+'", "'+this.name+"."+e+'"';if(null!=i&&"object"!=typeof i)throw'invalid options "'+i+'", "'+this.name+"."+e+'"'}var a=Object.create(t);if(a.name=e,this.members[e]=a,this.names.push(e),rtl.isObject(i))for(var n in i)i.hasOwnProperty(n)&&(a[n]=i[n]);return a},a.addField=function(e,t,i){var a=this.$addMember(e,rtl.tTypeMemberField,i);if(rtl.debug_rtti&&!rtl.is(t,rtl.tTypeInfo))throw'invalid type "'+t+'", "'+this.name+"."+e+'"';return a.typeinfo=t,this.fields.push(e),a},a.addFields=function(){for(var e=0;e0?e.substring(t-1,t+i-1):""},this.Copy$1=function(e,t){return t<1&&(t=1),e.substr(t-1)},this.Delete=function(t,i,a){var n;i<1||i>t.get().length||a<=0||(n=t.get(),t.set(e.Copy(n,1,i-1)+e.Copy$1(n,i+a)))},this.Pos=function(e,t){return t.indexOf(e)+1},this.Insert=function(t,i,a){var n;""!==t&&(n=i.get(),a<1?i.set(t+n):a>n.length?i.set(n+t):i.set(e.Copy(n,1,a-1)+t+e.Copy(n,a,n.length)))},this.upcase=function(e){return e.toUpperCase()},this.val=function(e,i,a){i.set(t.valint(e,-9007199254740991,9007199254740991,a))},this.val$6=function(e,i,a){i.set(t.valint(e,-2147483648,2147483647,a))},this.StringOfChar=function(e,t){var i="";if(t>0&&e.repeat)return e.repeat(t);i="";for(var a=1,n=t;a<=n;a++)a,i+=e;return i},this.Writeln=function(){var e=0,i=0,a="";if(i=arguments.length-1,null!=t.WriteCallBack)for(var n=0,s=i;n<=s;n++)e=n,t.WriteCallBack(arguments[e],e===i);else{a=t.WriteBuf;for(var o=0,r=i;o<=r;o++)a=a+""+arguments[e=o];console.log(a),t.WriteBuf=""}},this.Assigned=function(e){return null!=e&&null!=e&&(!rtl.isArray(e)||e.length>0)},e.$implcode=function(){t.WriteBuf="",t.WriteCallBack=null,t.valint=function(t,i,a,n){var s=0,o=0;if(""===t)return n.set(1),s;if(o=Number(t),isNaN(o)){var r=e.Copy(t,1,1);if("$"===r)o=Number("0x"+e.Copy$1(t,2));else if("&"===r)o=Number("0o"+e.Copy$1(t,2));else{if("%"!==r)return n.set(1),s;o=Number("0b"+e.Copy$1(t,2))}}return isNaN(o)||o!==e.Int(o)?n.set(1):oa?n.set(2):(s=e.Trunc(o),n.set(0)),s}},e.$init=function(){rtl.exitcode=0}}),[]),rtl.module("RTLConsts",["System"],(function(){"use strict";this.$resourcestrings={SArgumentMissing:{org:'Missing argument in format "%s"'},SInvalidFormat:{org:'Invalid format specifier : "%s"'},SInvalidArgIndex:{org:'Invalid argument index in format: "%s"'},SListCapacityError:{org:"List capacity (%s) exceeded."},SListCountError:{org:"List count (%s) out of bounds."},SListIndexError:{org:"List index (%s) out of bounds"},SSortedListError:{org:"Operation not allowed on sorted list"},SDuplicateString:{org:"String list does not allow duplicates"},SErrFindNeedsSortedList:{org:"Cannot use find on unsorted list"},SInvalidName:{org:'Invalid component name: "%s"'},SDuplicateName:{org:'Duplicate component name: "%s"'},SCantReadPropertyS:{org:'Cannot read property "%s"'},SCantWritePropertyS:{org:'Cannot write property "%s"'},SErrPropertyNotFound:{org:'Unknown property: "%s"'},SIndexedPropertyNeedsParams:{org:'Indexed property "%s" needs parameters'},SErrInvalidInteger:{org:'Invalid integer value: "%s"'},SErrInvalidFloat:{org:'Invalid floating-point value: "%s"'}}})),rtl.module("Types",["System"],(function(){"use strict";var e=this;this.TDirection={0:"FromBeginning",FromBeginning:0,1:"FromEnd",FromEnd:1},this.TDuplicates={0:"dupIgnore",dupIgnore:0,1:"dupAccept",dupAccept:1,2:"dupError",dupError:2},rtl.recNewT(this,"TPoint",(function(){this.x=0,this.y=0,this.$eq=function(e){return this.x===e.x&&this.y===e.y},this.$assign=function(e){return this.x=e.x,this.y=e.y,this};var t=e.$rtti.$Record("TPoint",{});t.addField("x",rtl.longint),t.addField("y",rtl.longint)})),rtl.recNewT(this,"TRect",(function(){this.Left=0,this.Top=0,this.Right=0,this.Bottom=0,this.$eq=function(e){return this.Left===e.Left&&this.Top===e.Top&&this.Right===e.Right&&this.Bottom===e.Bottom},this.$assign=function(e){return this.Left=e.Left,this.Top=e.Top,this.Right=e.Right,this.Bottom=e.Bottom,this};var t=e.$rtti.$Record("TRect",{});t.addField("Left",rtl.longint),t.addField("Top",rtl.longint),t.addField("Right",rtl.longint),t.addField("Bottom",rtl.longint)})),this.Rect=function(t,i,a,n){var s=e.TRect.$new();return s.Left=t,s.Top=i,s.Right=a,s.Bottom=n,s},this.Point=function(t,i){var a=e.TPoint.$new();return a.x=t,a.y=i,a}})),rtl.module("JS",["System","Types"],(function(){"use strict"})),rtl.module("SysUtils",["System","RTLConsts","JS"],(function(){"use strict";var e=this,t=e.$impl;this.FreeAndNil=function(e){var t=null;null!==(t=e.get())&&(e.set(null),t.$destroy("Destroy"))},rtl.recNewT(this,"TFormatSettings",(function(){this.CurrencyDecimals=0,this.CurrencyFormat=0,this.CurrencyString="",this.DateSeparator="",this.DecimalSeparator="",this.LongDateFormat="",this.LongTimeFormat="",this.NegCurrFormat=0,this.ShortDateFormat="",this.ShortTimeFormat="",this.ThousandSeparator="",this.TimeAMString="",this.TimePMString="",this.TimeSeparator="",this.TwoDigitYearCenturyWindow=0,this.InitLocaleHandler=null,this.$new=function(){var e=Object.create(this);return e.DateTimeToStrFormat=rtl.arraySetLength(null,"",2),e.LongDayNames=rtl.arraySetLength(null,"",7),e.LongMonthNames=rtl.arraySetLength(null,"",12),e.ShortDayNames=rtl.arraySetLength(null,"",7),e.ShortMonthNames=rtl.arraySetLength(null,"",12),e},this.$eq=function(e){return this.CurrencyDecimals===e.CurrencyDecimals&&this.CurrencyFormat===e.CurrencyFormat&&this.CurrencyString===e.CurrencyString&&this.DateSeparator===e.DateSeparator&&rtl.arrayEq(this.DateTimeToStrFormat,e.DateTimeToStrFormat)&&this.DecimalSeparator===e.DecimalSeparator&&this.LongDateFormat===e.LongDateFormat&&rtl.arrayEq(this.LongDayNames,e.LongDayNames)&&rtl.arrayEq(this.LongMonthNames,e.LongMonthNames)&&this.LongTimeFormat===e.LongTimeFormat&&this.NegCurrFormat===e.NegCurrFormat&&this.ShortDateFormat===e.ShortDateFormat&&rtl.arrayEq(this.ShortDayNames,e.ShortDayNames)&&rtl.arrayEq(this.ShortMonthNames,e.ShortMonthNames)&&this.ShortTimeFormat===e.ShortTimeFormat&&this.ThousandSeparator===e.ThousandSeparator&&this.TimeAMString===e.TimeAMString&&this.TimePMString===e.TimePMString&&this.TimeSeparator===e.TimeSeparator&&this.TwoDigitYearCenturyWindow===e.TwoDigitYearCenturyWindow},this.$assign=function(e){return this.CurrencyDecimals=e.CurrencyDecimals,this.CurrencyFormat=e.CurrencyFormat,this.CurrencyString=e.CurrencyString,this.DateSeparator=e.DateSeparator,this.DateTimeToStrFormat=e.DateTimeToStrFormat.slice(0),this.DecimalSeparator=e.DecimalSeparator,this.LongDateFormat=e.LongDateFormat,this.LongDayNames=e.LongDayNames.slice(0),this.LongMonthNames=e.LongMonthNames.slice(0),this.LongTimeFormat=e.LongTimeFormat,this.NegCurrFormat=e.NegCurrFormat,this.ShortDateFormat=e.ShortDateFormat,this.ShortDayNames=e.ShortDayNames.slice(0),this.ShortMonthNames=e.ShortMonthNames.slice(0),this.ShortTimeFormat=e.ShortTimeFormat,this.ThousandSeparator=e.ThousandSeparator,this.TimeAMString=e.TimeAMString,this.TimePMString=e.TimePMString,this.TimeSeparator=e.TimeSeparator,this.TwoDigitYearCenturyWindow=e.TwoDigitYearCenturyWindow,this},this.GetJSLocale=function(){return Intl.DateTimeFormat().resolvedOptions().locale},this.GetLocaleDecimalSeparator=function(e){var t=1.1;return t=t.toLocaleString(e).substring(1,2)},this.GetLocaleLongDayName=function(e,t){var i=new Date(2017,0,1);return i.setDate(i.getDate()+e-1),i.toLocaleDateString(t,{weekday:"long"})},this.GetLocaleLongMonthName=function(e,t){return new Date(2017,e-1,1).toLocaleDateString(t,{month:"long"})},this.GetLocaleLongTimeFormat=function(t){var i="";return i="hh:nn:ss","EN-US"===e.UpperCase(t)&&(i="hh:nn:ss AMPM"),i};this.GetLocaleShortDateFormat=function(t){var i;e.TStringHelper.Empty,t=e.TStringHelper.ToLower.call({get:function(){return t},set:function(e){t=e}}),(i=e.TStringHelper.IndexOf.call({get:function(){return t},set:function(e){t=e}},"-"))>=0?t=e.TStringHelper.Substring$1.call({get:function(){return t},set:function(e){t=e}},0,i)+e.TStringHelper.ToUpper.call({a:e.TStringHelper.Substring.call({get:function(){return t},set:function(e){t=e}},i),get:function(){return this.a},set:function(e){this.a=e}}):2===e.TStringHelper.GetLength.call({get:function(){return t},set:function(e){t=e}})&&(t=t+"-"+e.TStringHelper.ToUpper.call({get:function(){return t},set:function(e){t=e}}));return{"ar-SA":"dd/MM/yy","bg-BG":"dd.M.yyyy","ca-ES":"dd/MM/yyyy","zh-TW":"yyyy/M/d","cs-CZ":"d.M.yyyy","da-DK":"dd-MM-yyyy","de-DE":"dd.MM.yyyy","el-GR":"d/M/yyyy","en-US":"M/d/yyyy","fi-FI":"d.M.yyyy","fr-FR":"dd/MM/yyyy","he-IL":"dd/MM/yyyy","hu-HU":"yyyy. MM. dd.","is-IS":"d.M.yyyy","it-IT":"dd/MM/yyyy","ja-JP":"yyyy/MM/dd","ko-KR":"yyyy-MM-dd","nl-NL":"d-M-yyyy","nb-NO":"dd.MM.yyyy","pl-PL":"yyyy-MM-dd","pt-BR":"d/M/yyyy","ro-RO":"dd.MM.yyyy","ru-RU":"dd.MM.yyyy","hr-HR":"d.M.yyyy","sk-SK":"d. M. yyyy","sq-AL":"yyyy-MM-dd","sv-SE":"yyyy-MM-dd","th-TH":"d/M/yyyy","tr-TR":"dd.MM.yyyy","ur-PK":"dd/MM/yyyy","id-ID":"dd/MM/yyyy","uk-UA":"dd.MM.yyyy","be-BY":"dd.MM.yyyy","sl-SI":"d.M.yyyy","et-EE":"d.MM.yyyy","lv-LV":"yyyy.MM.dd.","lt-LT":"yyyy.MM.dd","fa-IR":"MM/dd/yyyy","vi-VN":"dd/MM/yyyy","hy-AM":"dd.MM.yyyy","az-Latn-AZ":"dd.MM.yyyy","eu-ES":"yyyy/MM/dd","mk-MK":"dd.MM.yyyy","af-ZA":"yyyy/MM/dd","ka-GE":"dd.MM.yyyy","fo-FO":"dd-MM-yyyy","hi-IN":"dd-MM-yyyy","ms-MY":"dd/MM/yyyy","kk-KZ":"dd.MM.yyyy","ky-KG":"dd.MM.yy","sw-KE":"M/d/yyyy","uz-Latn-UZ":"dd/MM yyyy","tt-RU":"dd.MM.yyyy","pa-IN":"dd-MM-yy","gu-IN":"dd-MM-yy","ta-IN":"dd-MM-yyyy","te-IN":"dd-MM-yy","kn-IN":"dd-MM-yy","mr-IN":"dd-MM-yyyy","sa-IN":"dd-MM-yyyy","mn-MN":"yy.MM.dd","gl-ES":"dd/MM/yy","kok-IN":"dd-MM-yyyy","syr-SY":"dd/MM/yyyy","dv-MV":"dd/MM/yy","ar-IQ":"dd/MM/yyyy","zh-CN":"yyyy/M/d","de-CH":"dd.MM.yyyy","en-GB":"dd/MM/yyyy","es-MX":"dd/MM/yyyy","fr-BE":"d/MM/yyyy","it-CH":"dd.MM.yyyy","nl-BE":"d/MM/yyyy","nn-NO":"dd.MM.yyyy","pt-PT":"dd-MM-yyyy","sr-Latn-CS":"d.M.yyyy","sv-FI":"d.M.yyyy","az-Cyrl-AZ":"dd.MM.yyyy","ms-BN":"dd/MM/yyyy","uz-Cyrl-UZ":"dd.MM.yyyy","ar-EG":"dd/MM/yyyy","zh-HK":"d/M/yyyy","de-AT":"dd.MM.yyyy","en-AU":"d/MM/yyyy","es-ES":"dd/MM/yyyy","fr-CA":"yyyy-MM-dd","sr-Cyrl-CS":"d.M.yyyy","ar-LY":"dd/MM/yyyy","zh-SG":"d/M/yyyy","de-LU":"dd.MM.yyyy","en-CA":"dd/MM/yyyy","es-GT":"dd/MM/yyyy","fr-CH":"dd.MM.yyyy","ar-DZ":"dd-MM-yyyy","zh-MO":"d/M/yyyy","de-LI":"dd.MM.yyyy","en-NZ":"d/MM/yyyy","es-CR":"dd/MM/yyyy","fr-LU":"dd/MM/yyyy","ar-MA":"dd-MM-yyyy","en-IE":"dd/MM/yyyy","es-PA":"MM/dd/yyyy","fr-MC":"dd/MM/yyyy","ar-TN":"dd-MM-yyyy","en-ZA":"yyyy/MM/dd","es-DO":"dd/MM/yyyy","ar-OM":"dd/MM/yyyy","en-JM":"dd/MM/yyyy","es-VE":"dd/MM/yyyy","ar-YE":"dd/MM/yyyy","en-029":"MM/dd/yyyy","es-CO":"dd/MM/yyyy","ar-SY":"dd/MM/yyyy","en-BZ":"dd/MM/yyyy","es-PE":"dd/MM/yyyy","ar-JO":"dd/MM/yyyy","en-TT":"dd/MM/yyyy","es-AR":"dd/MM/yyyy","ar-LB":"dd/MM/yyyy","en-ZW":"M/d/yyyy","es-EC":"dd/MM/yyyy","ar-KW":"dd/MM/yyyy","en-PH":"M/d/yyyy","es-CL":"dd-MM-yyyy","ar-AE":"dd/MM/yyyy","es-UY":"dd/MM/yyyy","ar-BH":"dd/MM/yyyy","es-PY":"dd/MM/yyyy","ar-QA":"dd/MM/yyyy","es-BO":"dd/MM/yyyy","es-SV":"dd/MM/yyyy","es-HN":"dd/MM/yyyy","es-NI":"dd/MM/yyyy","es-PR":"dd/MM/yyyy","am-ET":"d/M/yyyy","tzm-Latn-DZ":"dd-MM-yyyy","iu-Latn-CA":"d/MM/yyyy","sma-NO":"dd.MM.yyyy","mn-Mong-CN":"yyyy/M/d","gd-GB":"dd/MM/yyyy","en-MY":"d/M/yyyy","prs-AF":"dd/MM/yy","bn-BD":"dd-MM-yy","wo-SN":"dd/MM/yyyy","rw-RW":"M/d/yyyy","qut-GT":"dd/MM/yyyy","sah-RU":"MM.dd.yyyy","gsw-FR":"dd/MM/yyyy","co-FR":"dd/MM/yyyy","oc-FR":"dd/MM/yyyy","mi-NZ":"dd/MM/yyyy","ga-IE":"dd/MM/yyyy","se-SE":"yyyy-MM-dd","br-FR":"dd/MM/yyyy","smn-FI":"d.M.yyyy","moh-CA":"M/d/yyyy","arn-CL":"dd-MM-yyyy","ii-CN":"yyyy/M/d","dsb-DE":"d. M. yyyy","ig-NG":"d/M/yyyy","kl-GL":"dd-MM-yyyy","lb-LU":"dd/MM/yyyy","ba-RU":"dd.MM.yy","nso-ZA":"yyyy/MM/dd","quz-BO":"dd/MM/yyyy","yo-NG":"d/M/yyyy","ha-Latn-NG":"d/M/yyyy","fil-PH":"M/d/yyyy","ps-AF":"dd/MM/yy","fy-NL":"d-M-yyyy","ne-NP":"M/d/yyyy","se-NO":"dd.MM.yyyy","iu-Cans-CA":"d/M/yyyy","sr-Latn-RS":"d.M.yyyy","si-LK":"yyyy-MM-dd","sr-Cyrl-RS":"d.M.yyyy","lo-LA":"dd/MM/yyyy","km-KH":"yyyy-MM-dd","cy-GB":"dd/MM/yyyy","bo-CN":"yyyy/M/d","sms-FI":"d.M.yyyy","as-IN":"dd-MM-yyyy","ml-IN":"dd-MM-yy","en-IN":"dd-MM-yyyy","or-IN":"dd-MM-yy","bn-IN":"dd-MM-yy","tk-TM":"dd.MM.yy","bs-Latn-BA":"d.M.yyyy","mt-MT":"dd/MM/yyyy","sr-Cyrl-ME":"d.M.yyyy","se-FI":"d.M.yyyy","zu-ZA":"yyyy/MM/dd","xh-ZA":"yyyy/MM/dd","tn-ZA":"yyyy/MM/dd","hsb-DE":"d. M. yyyy","bs-Cyrl-BA":"d.M.yyyy","tg-Cyrl-TJ":"dd.MM.yy","sr-Latn-BA":"d.M.yyyy","smj-NO":"dd.MM.yyyy","rm-CH":"dd/MM/yyyy","smj-SE":"yyyy-MM-dd","quz-EC":"dd/MM/yyyy","quz-PE":"dd/MM/yyyy","hr-BA":"d.M.yyyy.","sr-Latn-ME":"d.M.yyyy","sma-SE":"yyyy-MM-dd","en-SG":"d/M/yyyy","ug-CN":"yyyy-M-d","sr-Cyrl-BA":"d.M.yyyy","es-US":"M/d/yyyy"}[t]||"dd/MM/yyyy"},this.GetLocaleShortDayName=function(e,t){var i=new Date(2017,0,1);i.setDate(i.getDate()+e-1);var a="";return a=""==t?navigator.language:t,i.toLocaleDateString(a,{weekday:"short"})},this.GetLocaleShortMonthName=function(e,t){var i=new Date(2017,e-1,1),a="";return a=""==t?navigator.language:t,i.toLocaleDateString(a,{month:"short"})},this.GetLocaleShortTimeFormat=function(t){var i="";return i="hh:nn","EN-US"===e.UpperCase(t)&&(i="h:nn AMPM"),i},this.Create=function(){var t=e.TFormatSettings.$new();return t.$assign(e.TFormatSettings.Create$1(e.TFormatSettings.GetJSLocale())),t};var i=["/",".","-"],a=[":",".","-"],n=[",","."],s=[".",","];this.Create$1=function(t){var o=e.TFormatSettings.$new(),r="",l=0,h="";h=e.UpperCase(t),1===pas.System.Pos("DE",h)?(o.LongDayNames[0]="Sonntag",o.LongDayNames[1]="Montag",o.LongDayNames[2]="Dienstag",o.LongDayNames[3]="Mittwoch",o.LongDayNames[4]="Donnerstag",o.LongDayNames[5]="Freitag",o.LongDayNames[6]="Samstag",o.ShortDayNames[0]="Son",o.ShortDayNames[1]="Mon",o.ShortDayNames[2]="Die",o.ShortDayNames[3]="Mit",o.ShortDayNames[4]="Don",o.ShortDayNames[5]="Fre",o.ShortDayNames[6]="Sam",o.ShortMonthNames[0]="Jan",o.ShortMonthNames[1]="Feb",o.ShortMonthNames[2]="Mär",o.ShortMonthNames[3]="Apr",o.ShortMonthNames[4]="Mai",o.ShortMonthNames[5]="Jun",o.ShortMonthNames[6]="Jul",o.ShortMonthNames[7]="Aug",o.ShortMonthNames[8]="Sep",o.ShortMonthNames[9]="Okt",o.ShortMonthNames[10]="Nov",o.ShortMonthNames[11]="Dez",o.LongMonthNames[0]="Januar",o.LongMonthNames[1]="Februar",o.LongMonthNames[2]="März",o.LongMonthNames[3]="April",o.LongMonthNames[4]="Mai",o.LongMonthNames[5]="Juni",o.LongMonthNames[6]="Juli",o.LongMonthNames[7]="August",o.LongMonthNames[8]="September",o.LongMonthNames[9]="Oktober",o.LongMonthNames[10]="November",o.LongMonthNames[11]="Dezember"):1===pas.System.Pos("FR",e.UpperCase(t))?(o.LongDayNames[0]="Dimanche",o.LongDayNames[1]="Lundi",o.LongDayNames[2]="Mardi",o.LongDayNames[3]="Mecredi",o.LongDayNames[4]="Jeudi",o.LongDayNames[5]="Vendredi",o.LongDayNames[6]="Samedi",o.ShortDayNames[0]="Dim",o.ShortDayNames[1]="Lun",o.ShortDayNames[2]="Mar",o.ShortDayNames[3]="Mer",o.ShortDayNames[4]="Jeu",o.ShortDayNames[5]="Ven",o.ShortDayNames[6]="Sam",o.ShortMonthNames[0]="Jan",o.ShortMonthNames[1]="Fév",o.ShortMonthNames[2]="Mar",o.ShortMonthNames[3]="Avr",o.ShortMonthNames[4]="Mai",o.ShortMonthNames[5]="Jun",o.ShortMonthNames[6]="Jul",o.ShortMonthNames[7]="Aoû",o.ShortMonthNames[8]="Sep",o.ShortMonthNames[9]="Oct",o.ShortMonthNames[10]="Nov",o.ShortMonthNames[11]="Déc",o.LongMonthNames[0]="Janvier",o.LongMonthNames[1]="Février",o.LongMonthNames[2]="Mars",o.LongMonthNames[3]="Avril",o.LongMonthNames[4]="Mai",o.LongMonthNames[5]="Juin",o.LongMonthNames[6]="Juillet",o.LongMonthNames[7]="Août",o.LongMonthNames[8]="Septembre",o.LongMonthNames[9]="Octobre",o.LongMonthNames[10]="Novembre",o.LongMonthNames[11]="Décembre"):1===pas.System.Pos("ES",e.UpperCase(t))?(o.LongDayNames[0]="Domingo",o.LongDayNames[1]="Lunes",o.LongDayNames[2]="Martes",o.LongDayNames[3]="Miércoles",o.LongDayNames[4]="Jueves",o.LongDayNames[5]="Viernes",o.LongDayNames[6]="Sábado",o.ShortDayNames[0]="Dom",o.ShortDayNames[1]="Lun",o.ShortDayNames[2]="Mar",o.ShortDayNames[3]="Mié",o.ShortDayNames[4]="Jue",o.ShortDayNames[5]="Vie",o.ShortDayNames[6]="Sáb",o.ShortMonthNames[0]="Ene",o.ShortMonthNames[1]="Feb",o.ShortMonthNames[2]="Mar",o.ShortMonthNames[3]="Abr",o.ShortMonthNames[4]="May",o.ShortMonthNames[5]="Jun",o.ShortMonthNames[6]="Jul",o.ShortMonthNames[7]="Ago",o.ShortMonthNames[8]="Sep",o.ShortMonthNames[9]="Oct",o.ShortMonthNames[10]="Nov",o.ShortMonthNames[11]="Dic",o.LongMonthNames[0]="January",o.LongMonthNames[1]="Febrero",o.LongMonthNames[2]="Marzi",o.LongMonthNames[3]="Abril",o.LongMonthNames[4]="Mayo",o.LongMonthNames[5]="Junio",o.LongMonthNames[6]="Julio",o.LongMonthNames[7]="Agusto",o.LongMonthNames[8]="Septiembre",o.LongMonthNames[9]="Octubre",o.LongMonthNames[10]="Noviembre",o.LongMonthNames[11]="Diciembre"):(o.LongDayNames[0]="Sunday",o.LongDayNames[1]="Monday",o.LongDayNames[2]="Tuesday",o.LongDayNames[3]="Wednesday",o.LongDayNames[4]="Thursday",o.LongDayNames[5]="Friday",o.LongDayNames[6]="Saturday",o.ShortDayNames[0]="Sun",o.ShortDayNames[1]="Mon",o.ShortDayNames[2]="Tue",o.ShortDayNames[3]="Wed",o.ShortDayNames[4]="Thu",o.ShortDayNames[5]="Fri",o.ShortDayNames[6]="Sat",o.ShortMonthNames[0]="Jan",o.ShortMonthNames[1]="Feb",o.ShortMonthNames[2]="Mar",o.ShortMonthNames[3]="Apr",o.ShortMonthNames[4]="May",o.ShortMonthNames[5]="Jun",o.ShortMonthNames[6]="Jul",o.ShortMonthNames[7]="Aug",o.ShortMonthNames[8]="Sep",o.ShortMonthNames[9]="Oct",o.ShortMonthNames[10]="Nov",o.ShortMonthNames[11]="Dec",o.LongMonthNames[0]="January",o.LongMonthNames[1]="February",o.LongMonthNames[2]="March",o.LongMonthNames[3]="April",o.LongMonthNames[4]="May",o.LongMonthNames[5]="June",o.LongMonthNames[6]="July",o.LongMonthNames[7]="August",o.LongMonthNames[8]="September",o.LongMonthNames[9]="October",o.LongMonthNames[10]="November",o.LongMonthNames[11]="December"),o.DateTimeToStrFormat[0]="c",o.DateTimeToStrFormat[1]="f",o.DateSeparator="-",o.TimeSeparator=":",o.ShortDateFormat="yyyy-mm-dd",o.LongDateFormat="ddd, yyyy-mm-dd",o.DecimalSeparator=".",o.ThousandSeparator=",",o.TimeAMString="AM",o.TimePMString="PM",o.TwoDigitYearCenturyWindow=50,o.ShortTimeFormat=e.TFormatSettings.GetLocaleShortTimeFormat(t),o.LongTimeFormat=e.TFormatSettings.GetLocaleLongTimeFormat(t),o.ShortDateFormat=e.TFormatSettings.GetLocaleShortDateFormat(t);for(var c=0,d=rtl.length(i)-1;c<=d;c++)l=c,e.TStringHelper.IndexOf.call({p:o,get:function(){return this.p.ShortDateFormat},set:function(e){this.p.ShortDateFormat=e}},i[l])>=0&&(o.DateSeparator=i[l]);var m=new Date("Jan 1, 1980 06:07:08 GMT+00:00");h="";h=""==t?navigator.language:t,r=m.toLocaleTimeString(h);for(var p=0,u=rtl.length(a)-1;p<=u;p++)l=p,e.TStringHelper.IndexOf.call({get:function(){return r},set:function(e){r=e}},a[l])>=0&&(o.TimeSeparator=a[l]);for(l=1;l<=7;l++)o.ShortDayNames[l-1]=e.TFormatSettings.GetLocaleShortDayName(l,t);for(l=1;l<=7;l++)o.LongDayNames[l-1]=e.TFormatSettings.GetLocaleLongDayName(l,t);for(l=1;l<=12;l++)o.ShortMonthNames[l-1]=e.TFormatSettings.GetLocaleShortMonthName(l,t);for(l=1;l<=12;l++)o.LongMonthNames[l-1]=e.TFormatSettings.GetLocaleLongMonthName(l,t);o.DecimalSeparator=e.TFormatSettings.GetLocaleDecimalSeparator(t);for(var g=0,S=rtl.length(n)-1;g<=S;g++)if(l=g,o.DecimalSeparator===n[l]){o.ThousandSeparator=s[l];break}return null!=e.TFormatSettings.InitLocaleHandler&&e.TFormatSettings.InitLocaleHandler(e.UpperCase(t),e.TFormatSettings.$clone(o)),o},this.Invariant=function(){var i=e.TFormatSettings.$new();return t.FInvariantCreated||(t.FInvariant.$assign(e.TFormatSettings.Create$1("EN-US")),t.FInvariant.CurrencyString="¤",t.FInvariant.CurrencyFormat=0,t.FInvariant.CurrencyDecimals=2,t.FInvariant.DateSeparator="/",t.FInvariant.TimeSeparator=":",t.FInvariant.ShortDateFormat="MM/dd/yyyy",t.FInvariant.LongDateFormat="dddd, dd MMMMM yyyy HH:mm:ss",t.FInvariant.TimeAMString="AM",t.FInvariant.TimePMString="PM",t.FInvariant.ShortTimeFormat="HH:mm",t.FInvariant.LongTimeFormat="HH:mm:ss",t.FInvariant.ShortMonthNames=t.DefaultShortMonthNames.slice(0),t.FInvariant.LongMonthNames=t.DefaultLongMonthNames.slice(0),t.FInvariant.ShortDayNames=t.DefaultShortDayNames.slice(0),t.FInvariant.LongDayNames=t.DefaultLongDayNames.slice(0),t.FInvariant.ThousandSeparator=",",t.FInvariant.DecimalSeparator=".",t.FInvariant.TwoDigitYearCenturyWindow=50,t.FInvariant.NegCurrFormat=0,t.FInvariantCreated=!0),i.$assign(t.FInvariant),i}}),!0),rtl.createClass(this,"Exception",pas.System.TObject,(function(){this.LogMessageOnCreate=!1,this.$init=function(){pas.System.TObject.$init.call(this),this.FMessage="",this.FJSError=null,this.FStack=void 0},this.$final=function(){this.FJSError=void 0,pas.System.TObject.$final.call(this)},this.Create$1=function(e){return this.FMessage=e,this.FJSError=new Error(e),this.FStack=this.FJSError.stack,this.LogMessageOnCreate&&pas.System.Writeln("Created exception ",this.$classname," with message: ",e),this},this.CreateFmt=function(t,i){return this.Create$1(e.Format(t,i)),this}})),rtl.createClass(this,"EConvertError",this.Exception,(function(){})),this.Trim=function(e){return e.replace(/^[\s\uFEFF\xA0\x00-\x1f]+/,"").replace(/[\s\uFEFF\xA0\x00-\x1f]+$/,"")},this.TrimLeft=function(e){return e.replace(/^[\s\uFEFF\xA0\x00-\x1f]+/,"")},this.UpperCase=function(e){return e.toUpperCase()},this.LowerCase=function(e){return e.toLowerCase()},this.CompareStr=function(e,t){var i,a=e.length,n=t.length;return a<=n?e<(i=t.substr(0,a))?-1:e>i?1:aa?1:i="0";)o+=1;if(o>c&&t.DoFormatError(1,i),"*"===i.charAt(o-1)){255===p?s=l:(s=p,p+=1),(o>r||s>rtl.length(a)-1)&&t.DoFormatError(1,i),l=s+1;var h=a[s].VType;0===h||19===h?e=a[s].VJSValue:t.DoFormatError(1,i),o+=1}else r0&&t.DoFormatError(1,i)):e=-1}}return p=255,u=-1,g=-1,e=-1,o+=1,"%"===i.charAt(o-1)?"%":(":"!==i.charAt(o-1)?n():e=0,":"===i.charAt(o-1)&&(-1===e&&t.DoFormatError(2,i),p=e,e=-1,o+=1),"-"===i.charAt(o-1)?(S=!0,o+=1):S=!1,n(),-1!==e&&(u=e,e=-1),"."===i.charAt(o-1)&&(o+=1,n(),-1===e&&(e=0),g=e),pas.System.upcase(i.charAt(o-1)))}function C(e,n){var s=!1;return s=!1,l=(h=255===p?l:p)+1,h>rtl.length(a)-1||a[h].VType!==e?(n&&t.DoFormatError(3,i),l-=1,s):s=!0}for(s="",c=i.length,o=1,r=1,l=0;o<=c;){for(;o<=c&&"%"!==i.charAt(o-1);)o+=1;if(o>r&&(s+=pas.System.Copy(i,r,o-r)),o>>0):C(19,!0)&&(m=e.IntToStr(a[h].VJSValue)),u=Math.abs(u),p=g-m.length,m=pas.System.StringOfChar("0",p)+m;else if("E"===f)C(12,!1)?m=e.FloatToStrF$1(a[h].VJSValue/1e4,2,3,g,n):C(3,!0)&&(m=e.FloatToStrF$1(a[h].VJSValue,2,3,g,n));else if("F"===f)C(12,!1)?m=e.FloatToStrF$1(a[h].VJSValue/1e4,0,9999,g,n):(C(0,!1)||C(3,!0))&&(m=e.FloatToStrF$1(a[h].VJSValue,0,9999,g,n));else if("G"===f)C(12,!1)?m=e.FloatToStrF$1(a[h].VJSValue/1e4,1,g,3,n):C(3,!0)&&(m=e.FloatToStrF$1(a[h].VJSValue,1,g,3,n));else if("N"===f)C(12,!1)?m=e.FloatToStrF$1(a[h].VJSValue/1e4,3,9999,g,n):C(3,!0)&&(m=e.FloatToStrF$1(a[h].VJSValue,3,9999,g,n));else if("M"===f)C(12,!1)?m=e.FloatToStrF$1(a[h].VJSValue/1e4,4,9999,g,n):C(3,!0)&&(m=e.FloatToStrF$1(a[h].VJSValue,4,9999,g,n));else if("S"===f)(C(18,!1)||C(9,!0))&&(d=a[h].VJSValue),p=d.length,-1!==g&&p>g&&(p=g),m=pas.System.Copy(d,1,p);else if("P"===f)C(0,!1)?m=e.IntToHex(a[h].VJSValue,8):C(0,!0)&&(m=e.IntToHex(a[h].VJSValue,16));else if("X"===f)if(C(0,!1)?(F=a[h].VJSValue,p=16):C(19,!0)&&(F=a[h].VJSValue,p=31),g>p)m=e.IntToHex(F,p);else{for(p=1;rtl.shl(1,4*p)<=F&&p<16;)p+=1;p>g&&(g=p),m=e.IntToHex(F,g)}else"%"===f&&(m="%");-1!==u&&m.length=s)return o;r=!0}}else if(!(e.charCodeAt(l-1)in a))return o;l+=1}return o=!0},this.TStringReplaceFlag={0:"rfReplaceAll",rfReplaceAll:0,1:"rfIgnoreCase",rfIgnoreCase:1},this.StringReplace=function(e,i,a,n){var s,o="";return o="",0 in n&&(o="g"),1 in n&&(o+="i"),s=i.replace(new RegExp(t.RESpecials,"g"),"\\$1"),e.replace(new RegExp(s,o),a)},this.IntToStr=function(e){return""+e},this.TryStrToInt$2=function(i,a){return t.IntTryStrToInt(i,a,e.FormatSettings.DecimalSeparator)},this.StrToInt=function(t){var i=0;if(!e.TryStrToInt$2(t,{get:function(){return i},set:function(e){i=e}}))throw e.EConvertError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SErrInvalidInteger"),pas.System.VarRecs(18,t)]);return i},this.IntToHex=function(t,i){var a="";for(a="",t<0&&t<0&&(t=4294967295+t+1),a=t.toString(16),a=e.UpperCase(a);a.length1&&"-"===l.charAt(0)&&t.RemoveLeadingNegativeSign({get:function(){return l},set:function(e){l=e}},r,o),l};this.TryStrToFloat$3=function(t,i,a){var n,s,o=!1,r=0,l=0,h="",c=0;for(o=!1,h=t,""!==a.ThousandSeparator&&(h=e.StringReplace(h,a.ThousandSeparator,"",rtl.createSet(0))),"."!==a.DecimalSeparator&&(h=e.StringReplace(h,a.DecimalSeparator,".",{})),c=0,r=1,l=1,s=h.length;r<=s;){var d=h.charAt(r-1);if("+"===d||"-"===d){if(1===c)return o;if(0===c){if(r>l)return o}else if(2===c&&r>l+1)return o}else if(d>="0"&&d<="9");else if("."===d){if(0!==c)return o;c=1,l=r}else{if("E"!==d&&"e"!==d)return o;if(2===c)return o;c=2,l=r}r+=1}return n=parseFloat(h),(o=!isNaN(n))&&i.set(rtl.getNumber(n)),o},this.StrToFloat$1=function(t,i){var a=0;if(!e.TryStrToFloat$3(t,{get:function(){return a},set:function(e){a=e}},i))throw e.EConvertError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SErrInvalidFloat"),pas.System.VarRecs(18,t)]);return a},rtl.recNewT(this,"TTimeStamp",(function(){this.Time=0,this.Date=0,this.$eq=function(e){return this.Time===e.Time&&this.Date===e.Date},this.$assign=function(e){return this.Time=e.Time,this.Date=e.Date,this}})),this.TimeSeparator="",this.DateSeparator="",this.ShortDateFormat="",this.LongDateFormat="",this.ShortTimeFormat="",this.LongTimeFormat="",this.DecimalSeparator="",this.ThousandSeparator="",this.TimeAMString="",this.TimePMString="",this.HoursPerDay=24,this.MinsPerHour=60,this.SecsPerMin=60,this.MSecsPerSec=1e3,this.MinsPerDay=1440,this.SecsPerDay=86400,this.MSecsPerDay=864e5,this.MaxDateTime=2958465.99999999,this.DateDelta=693594,this.MonthDays$a$clone=function(e){var t=[];t.length=2;for(var i=0;i<2;i++)t[i]=e[i].slice(0);return t},this.MonthDays=[[31,28,31,30,31,30,31,31,30,31,30,31],[31,29,31,30,31,30,31,31,30,31,30,31]],this.ShortMonthNames=rtl.arraySetLength(null,"",12),this.LongMonthNames=rtl.arraySetLength(null,"",12),this.ShortDayNames=rtl.arraySetLength(null,"",7),this.LongDayNames=rtl.arraySetLength(null,"",7),this.FormatSettings=this.TFormatSettings.$new(),this.JSDateToDateTime=function(t){return e.EncodeDate(t.getFullYear(),t.getMonth()+1,t.getDate())+e.EncodeTime(t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds())},this.DateTimeToTimeStamp=function(t){var i=e.TTimeStamp.$new(),a=0;return(a=864e5*t)<0?a-=.5:a+=.5,i.Time=pas.System.Trunc(Math.abs(pas.System.Trunc(a))%864e5),i.Date=693594+rtl.trunc(pas.System.Trunc(a)/864e5),i},this.TryEncodeDate=function(t,i,a,n){var s,o=0,r=0;return(s=t>0&&t<1e4&&i>=1&&i<=12&&a>0&&a<=e.MonthDays[+e.IsLeapYear(t)][i-1])&&(i>2?i-=3:(i+=9,t-=1),r=t-100*(o=rtl.trunc(t/100)),n.set((146097*o>>>2)+(1461*r>>>2)+rtl.trunc((153*i+2)/5)+a),n.set(n.get()-693900)),s},this.TryEncodeTime=function(e,t,i,a,n){var s;return(s=e<24&&t<60&&i<60&&a<1e3)&&n.set((36e5*e+6e4*t+1e3*i+a)/864e5),s},this.EncodeDate=function(t,i,a){var n=0;if(!e.TryEncodeDate(t,i,a,{get:function(){return n},set:function(e){n=e}}))throw e.EConvertError.$create("CreateFmt",["%s-%s-%s is not a valid date specification",pas.System.VarRecs(18,e.IntToStr(t),18,e.IntToStr(i),18,e.IntToStr(a))]);return n},this.EncodeTime=function(t,i,a,n){var s=0;if(!e.TryEncodeTime(t,i,a,n,{get:function(){return s},set:function(e){s=e}}))throw e.EConvertError.$create("CreateFmt",["%s:%s:%s.%s is not a valid time specification",pas.System.VarRecs(18,e.IntToStr(t),18,e.IntToStr(i),18,e.IntToStr(a),18,e.IntToStr(n))]);return s},this.DecodeDate=function(t,i,a,n){var s=0,o=0,r=0,l=0;t<=-693594?(i.set(0),a.set(0),n.set(0)):(t>0?t+=1/1728e5:t-=1/1728e5,t>e.MaxDateTime&&(t=e.MaxDateTime),l=rtl.shl(pas.System.Trunc(t)+693900,2)-1,l-=146097*(s=rtl.trunc(l/146097)),o=rtl.lw(l>>>2),l=rtl.trunc((rtl.lw(o<<2)+3)/1461),o=rtl.lw(rtl.lw(o<<2)+7-1461*l>>>2),r=rtl.trunc((5*o-3)/153),o=rtl.trunc((5*o+2-153*r)/5),s=100*s+l,r<10?r+=3:(r-=9,s+=1),i.set(s),a.set(r),n.set(o))},this.DecodeTime=function(t,i,a,n,s){var o=0;o=e.DateTimeToTimeStamp(t).Time,i.set(rtl.trunc(o/36e5)),o%=36e5,a.set(rtl.trunc(o/6e4)),o%=6e4,n.set(rtl.trunc(o/1e3)),o%=1e3,s.set(o)},this.Now=function(){return e.JSDateToDateTime(new Date)},this.IsLeapYear=function(e){return e%4==0&&(e%100!=0||e%400==0)},this.CurrencyFormat=0,this.NegCurrFormat=0,this.CurrencyDecimals=0,this.CurrencyString="",rtl.createHelper(this,"TStringHelper",null,(function(){this.Empty="",this.GetLength=function(){return this.get().length},this.LowerCase=function(t){return e.LowerCase(t)},this.UpperCase=function(t){return e.UpperCase(t)},this.Contains=function(e){return""!==e&&pas.System.Pos(e,this.get())>0},this.IndexOf=function(t){return e.TStringHelper.IndexOf$4.call(this,t,0,e.TStringHelper.GetLength.call(this))},this.IndexOf$4=function(e,t,i){var a,n=0;return a=pas.System.Copy(this.get(),t+1,i),-1!==(n=pas.System.Pos(e,a)-1)&&(n+=t),n},this.Replace$3=function(t,i,a){return e.StringReplace(this.get(),t,i,rtl.refSet(a))},this.Substring=function(t){return e.TStringHelper.Substring$1.call(this,t,e.TStringHelper.GetLength.call(this)-t)},this.Substring$1=function(e,t){return pas.System.Copy(this.get(),e+1,t)},this.ToInteger$1=function(){return e.StrToInt(this.get())},this.ToLower=function(){return e.TStringHelper.LowerCase(this.get())},this.ToUpper=function(){return e.TStringHelper.UpperCase(this.get())},this.Trim=function(){return e.Trim(this.get())}})),rtl.createHelper(this,"TIntegerHelper",null,(function(){this.MinValue=-2147483648,this.ToString$1=function(){return e.IntToStr(this.get())}})),rtl.createHelper(this,"TUInt64Helper",null,(function(){this.ToString$1=function(){return e.IntToStr(this.get())}})),rtl.createHelper(this,"TNativeIntHelper",null,(function(){this.MaxValue=9007199254740991})),e.$implcode=function(){t.DefaultShortMonthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t.DefaultLongMonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"],t.DefaultShortDayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t.DefaultLongDayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],t.FInvariant=e.TFormatSettings.$new(),t.FInvariantCreated=!1,t.feInvalidFormat=1,t.feMissingArgument=2,t.feInvalidArgIndex=3,t.DoFormatError=function(t,i){var a=t;if(1===a)throw e.EConvertError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SInvalidFormat"),pas.System.VarRecs(18,i)]);if(2===a)throw e.EConvertError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SArgumentMissing"),pas.System.VarRecs(18,i)]);if(3===a)throw e.EConvertError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SInvalidArgIndex"),pas.System.VarRecs(18,i)])},t.maxdigits=15,t.ReplaceDecimalSep=function(e,t){var i;return(i=pas.System.Pos(".",e))>0?pas.System.Copy(e,1,i-1)+t+pas.System.Copy(e,i+1,e.length-i):e},t.FormatGeneralFloat=function(i,a,n){var s="",o=0,r=0,l=0,h=0;if((-1===a||a>15)&&(a=15),s=rtl.floatToStr(i,a+7),s=e.TrimLeft(s),0===(o=pas.System.Pos(".",s)))return s;if(0===(r=pas.System.Pos("E",s)))return s=t.ReplaceDecimalSep(s,n);for(l=r+2,h=0;l<=s.length;)h=10*h+s.charCodeAt(l-1)-48,l+=1;if("-"===s.charAt(r+1-1)&&(h=-h),o+h-6){if(s=rtl.strSetLength(s,r-1),h>=0){for(var c=0,d=h-1;c<=d;c++)l=c,s=rtl.setCharAt(s,o-1,s.charAt(o+1-1)),o+=1;for(s=rtl.setCharAt(s,o-1,"."),o=1,"-"===s.charAt(o-1)&&(o+=1);"0"===s.charAt(o-1)&&o0&&"0"===s.charAt(l-1);)l-=1;"."===s.charAt(l-1)&&(l-=1),s=0===l||1===l&&"-"===s.charAt(0)?"0":rtl.strSetLength(s,l)}else{for(;"0"===s.charAt(r-1-1);)pas.System.Delete({get:function(){return s},set:function(e){s=e}},r-1,1),r-=1;for(s.charAt(r-1-1)===n&&(pas.System.Delete({get:function(){return s},set:function(e){s=e}},r-1,1),r-=1),"+"===s.charAt(r+1-1)?pas.System.Delete({get:function(){return s},set:function(e){s=e}},r+1,1):r+=1;"0"===s.charAt(r+1-1);)pas.System.Delete({get:function(){return s},set:function(e){s=e}},r+1,1)}return s=t.ReplaceDecimalSep(s,n)},t.FormatExponentFloat=function(i,a,n,s){var o="",r=0;for(s=e.FormatSettings.DecimalSeparator,(-1===a||a>15)&&(a=15),o=rtl.floatToStr(i,a+7);" "===o.charAt(0);)pas.System.Delete({get:function(){return o},set:function(e){o=e}},1,1);if(0===(r=pas.System.Pos("E",o)))return o=t.ReplaceDecimalSep(o,s);if(r+=2,n>4&&(n=4),(n=o.length-r-n+1)<0)pas.System.Insert(pas.System.Copy("0000",1,-n),{get:function(){return o},set:function(e){o=e}},r);else for(;n>0&&"0"===o.charAt(r-1);){if(pas.System.Delete({get:function(){return o},set:function(e){o=e}},r,1),r>o.length){pas.System.Delete({get:function(){return o},set:function(e){o=e}},r-2,2);break}n-=1}return o=t.ReplaceDecimalSep(o,s)},t.FormatFixedFloat=function(e,i,a){var n="";return-1===i?i=2:i>18&&(i=18),""!==(n=rtl.floatToStr(e,0,i))&&" "===n.charAt(0)&&pas.System.Delete({get:function(){return n},set:function(e){n=e}},1,1),n=t.ReplaceDecimalSep(n,a)},t.FormatNumberFloat=function(e,i,a,n){var s="",o=0;if(-1===i?i=2:i>15&&(i=15),""!==(s=rtl.floatToStr(e,0,i))&&" "===s.charAt(0)&&pas.System.Delete({get:function(){return s},set:function(e){s=e}},1,1),(o=pas.System.Pos(".",s))<=0&&(o=s.length+1),s=t.ReplaceDecimalSep(s,a),o-=3,""!==n&&"\0"!==n)for(;o>1;)"-"!==s.charAt(o-1-1)&&pas.System.Insert(n,{get:function(){return s},set:function(e){s=e}},o),o-=3;return s},t.RemoveLeadingNegativeSign=function(e,t,i){var a,n=!1,s=0;n=!1,a=i;for(var o=2,r=e.get().length;o<=r&&(s=o,n=e.get().charCodeAt(s-1)in rtl.createSet(48,t.charCodeAt(),69,43)||e.get().charAt(s-1)===a);o++);return n&&"-"===e.get().charAt(0)&&pas.System.Delete(e,1,1),n},t.FormatNumberCurrency=function(e,i,a){var n,s,o,r,l="",h=0;if(o=a.DecimalSeparator,r=a.ThousandSeparator,s=a.CurrencyString,-1===i?i=a.CurrencyDecimals:i>18&&(i=18),(n="-"===(l=rtl.floatToStr(e/1e4,0,i)).charAt(0))&&pas.System.Delete({get:function(){return l},set:function(e){l=e}},1,1),h=pas.System.Pos(".",l),""!==r)for(0!==h?l=t.ReplaceDecimalSep(l,o):h=l.length+1,h-=3;h>1;)pas.System.Insert(r,{get:function(){return l},set:function(e){l=e}},h),h-=3;if(n&&t.RemoveLeadingNegativeSign({get:function(){return l},set:function(e){l=e}},o,r),n){var c=a.NegCurrFormat;0===c?l="("+s+l+")":1===c?l="-"+s+l:2===c?l=s+"-"+l:3===c?l=s+l+"-":4===c?l="("+l+s+")":5===c?l="-"+l+s:6===c?l=l+"-"+s:7===c?l=l+s+"-":8===c?l="-"+l+" "+s:9===c?l="-"+s+" "+l:10===c?l=l+" "+s+"-":11===c?l=s+" "+l+"-":12===c?l=s+" -"+l:13===c?l=l+"- "+s:14===c?l="("+s+" "+l+")":15===c&&(l="("+l+" "+s+")")}else{var d=a.CurrencyFormat;0===d?l=s+l:1===d?l+=s:2===d?l=s+" "+l:3===d&&(l=l+" "+s)}return l},t.RESpecials="([\\$\\+\\[\\]\\(\\)\\\\\\.\\*\\^\\?\\|])",t.IntTryStrToInt=function(t,i,a){var n,s,o=10,r="";if(r=t,0!==pas.System.Pos(a,r)||0!==pas.System.Pos(".",r))return!1;var l=pas.System.Copy(r,1,1);return"$"===l?o=16:"&"===l?o=8:"%"===l&&(o=2),(16===o||0===pas.System.Pos("e",e.LowerCase(r)))&&(10!==o&&pas.System.Delete({get:function(){return r},set:function(e){r=e}},1,1),s=parseInt(r,o),(n=!isNaN(s))&&i.set(rtl.trunc(s)),n)},t.InitGlobalFormatSettings=function(){e.FormatSettings.$assign(e.TFormatSettings.Create()),e.TimeSeparator=e.FormatSettings.TimeSeparator,e.DateSeparator=e.FormatSettings.DateSeparator,e.ShortDateFormat=e.FormatSettings.ShortDateFormat,e.LongDateFormat=e.FormatSettings.LongDateFormat,e.ShortTimeFormat=e.FormatSettings.ShortTimeFormat,e.LongTimeFormat=e.FormatSettings.LongTimeFormat,e.DecimalSeparator=e.FormatSettings.DecimalSeparator,e.ThousandSeparator=e.FormatSettings.ThousandSeparator,e.TimeAMString=e.FormatSettings.TimeAMString,e.TimePMString=e.FormatSettings.TimePMString,e.CurrencyFormat=e.FormatSettings.CurrencyFormat,e.NegCurrFormat=e.FormatSettings.NegCurrFormat,e.CurrencyDecimals=e.FormatSettings.CurrencyDecimals,e.CurrencyString=e.FormatSettings.CurrencyString}},e.$init=function(){t.InitGlobalFormatSettings(),e.ShortMonthNames=t.DefaultShortMonthNames.slice(0),e.LongMonthNames=t.DefaultLongMonthNames.slice(0),e.ShortDayNames=t.DefaultShortDayNames.slice(0),e.LongDayNames=t.DefaultLongDayNames.slice(0)}}),[]),rtl.module("TypInfo",["System","SysUtils","Types","RTLConsts","JS"],(function(){"use strict";var e=this,t=e.$impl;this.pfGetFunction=1,this.pfSetProcedure=2,this.pfHasIndex=16,rtl.createClass(this,"EPropertyError",pas.SysUtils.Exception,(function(){})),this.GetPropInfo=function(e,t){var i=null,a=null,n=0,s=null;for(s=e;null!==s;){if(a=s.members[t],rtl.isExt(a,rtl.tTypeMemberProperty))return a;if(!rtl.isExt(s,rtl.tTypeInfoClass))break;s=s.ancestor}i=null;do{for(var o=0,r=e.properties.length-1;o<=r;o++)if(n=o,0===pas.SysUtils.CompareText(t,e.properties[n]))return a=e.members[e.properties[n]],rtl.isExt(a,rtl.tTypeMemberProperty)&&(i=a),i;if(!rtl.isExt(e,rtl.tTypeInfoClass))break;e=e.ancestor}while(null!==e);return i},this.FindPropInfo=function(t,i){var a;if(null===(a=e.GetPropInfo(t.$rtti,i)))throw e.EPropertyError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SErrPropertyNotFound"),pas.System.VarRecs(18,i)]);return a},this.GetJSValueProp$1=function(i,a){var n=void 0,s=t.GetPropGetterKind(a);if(0===s)throw e.EPropertyError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SCantReadPropertyS"),pas.System.VarRecs(18,a.name)]);if(1===s)n=i[a.getter];else if(2===s)n=(16&a.flags)>0?i[a.getter](a.index):i[a.getter]();else if(3===s)throw e.EPropertyError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SIndexedPropertyNeedsParams"),pas.System.VarRecs(18,a.name)]);return n},this.GetJSValueProp$3=function(t,i){return e.GetJSValueProp$1(t,i)},this.SetJSValueProp$1=function(i,a,n){var s=t.GetPropSetterKind(a);if(0===s)throw e.EPropertyError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SCantWritePropertyS"),pas.System.VarRecs(18,a.name)]);if(1===s)i[a.setter]=n;else if(2===s)(16&a.flags)>0?i[a.setter](a.index,n):i[a.setter](n);else if(3===s)throw e.EPropertyError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SIndexedPropertyNeedsParams"),pas.System.VarRecs(18,a.name)])},this.SetJSValueProp$3=function(t,i,a){e.SetJSValueProp$1(t,i,a)},this.GetOrdProp$1=function(t,i){var a=0,n="",s=0,o=void 0;if(5===i.typeinfo.kind)for(n in a=0,e.GetJSValueProp$3(t,i))(s=parseInt(n,10))<32&&(a+=1<0?rtl.length(e.params)>0?3:2:1},t.TSetterKind={0:"skNone",skNone:0,1:"skField",skField:1,2:"skProcedure",skProcedure:2,3:"skProcedureWithParams",skProcedureWithParams:3},t.GetPropSetterKind=function(e){return""===e.setter?0:(2&e.flags)>0?rtl.length(e.params)>0?3:2:1}}}),[]),rtl.module("Web",["System","Types","JS"],(function(){"use strict";rtl.createClassExt(this,"TJSFocusEvent",Event,"",(function(){this.$init=function(){},this.$final=function(){}})),this.$rtti.$ExtClass("TJSXMLHttpRequest",{ancestor:this.$rtti.TJSXMLHttpRequestEventTarget,jsclass:"XMLHttpRequest"}),rtl.createClass(this,"TJSKeyNames",pas.System.TObject,(function(){this.Alt="Alt",this.CapsLock="CapsLock",this.Control="Control",this.Shift="Shift",this.Enter="Enter",this.Tab="Tab",this.ArrowDown="ArrowDown",this.ArrowLeft="ArrowLeft",this.ArrowRight="ArrowRight",this.ArrowUp="ArrowUp",this._End="End",this.Home="Home",this.PageDown="PageDown",this.PageUp="PageUp",this.BackSpace="Backspace",this.Delete="Delete",this.Insert="Insert",this.Escape="Escape",this.Pause="Pause",this.F1="F1",this.F2="F2",this.F3="F3",this.F4="F4",this.F5="F5",this.F6="F6",this.F7="F7",this.F8="F8",this.F9="F9",this.F10="F10",this.F11="F11",this.F12="F12",this.F13="F13",this.F14="F14",this.F15="F15",this.F16="F16",this.F17="F17",this.F18="F18",this.F19="F19",this.F20="F20"}))})),rtl.module("Classes",["System","RTLConsts","Types","SysUtils","JS","TypInfo"],(function(){"use strict";var e=this,t=e.$impl;this.$rtti.$MethodVar("TNotifyEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject]]),methodkind:0}),rtl.createClass(this,"EListError",pas.SysUtils.Exception,(function(){})),rtl.createClass(this,"EStringListError",this.EListError,(function(){})),rtl.createClass(this,"EComponentError",pas.SysUtils.Exception,(function(){})),this.TAlignment={0:"taLeftJustify",taLeftJustify:0,1:"taRightJustify",taRightJustify:1,2:"taCenter",taCenter:2},this.$rtti.$Enum("TAlignment",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TAlignment}),rtl.createClass(this,"TFPList",pas.System.TObject,(function(){this.$init=function(){pas.System.TObject.$init.call(this),this.FList=[],this.FCount=0,this.FCapacity=0},this.$final=function(){this.FList=void 0,pas.System.TObject.$final.call(this)},this.Get=function(e){return(e<0||e>=this.FCount)&&this.RaiseIndexError(e),this.FList[e]},this.SetCapacity=function(e){ethis.FCount&&e>this.FCapacity&&this.SetCapacity(e),this.FCount=e},this.RaiseIndexError=function(e){this.$class.Error(rtl.getResStr(pas.RTLConsts,"SListIndexError"),""+e)},this.Destroy=function(){this.Clear(),pas.System.TObject.Destroy.call(this)},this.Add=function(e){var t;return this.FCount===this.FCapacity&&this.Expand(),this.FList[this.FCount]=e,t=this.FCount,this.FCount+=1,t},this.Clear=function(){rtl.length(this.FList)>0&&(this.SetCount(0),this.SetCapacity(0))},this.Delete=function(e){(e<0||e>=this.FCount)&&this.$class.Error(rtl.getResStr(pas.RTLConsts,"SListIndexError"),""+e),this.FCount=this.FCount-1,this.FList.splice(e,1),this.FCapacity-=1},this.Error=function(t,i){throw e.EListError.$create("CreateFmt",[t,pas.System.VarRecs(18,i)])},this.Expand=function(){var e=0;return this.FCount3&&(e+=4),this.FCapacity>8&&(e+=8),this.FCapacity>127&&(e+=this.FCapacity>>>2),this.SetCapacity(this.FCapacity+e),this),this},this.IndexOf=function(e){var t,i=0;for(i=0,t=this.FCount;i=t&&(i=-1),i},this.IndexOfItem=function(e,t){var i=0;if(0===t)i=this.IndexOf(e);else for(i=this.FCount-1;i>=0&&this.FList[i]!=e;)i-=1;return i},this.Insert=function(e,t){(e<0||e>this.FCount)&&this.$class.Error(rtl.getResStr(pas.RTLConsts,"SListIndexError"),""+e),this.FList.splice(e,0,t),this.FCapacity+=1,this.FCount+=1},this.Last=function(){return 0===this.FCount?null:this.Get(this.FCount-1)},this.Remove=function(e){var t;return-1!==(t=this.IndexOf(e))&&this.Delete(t),t}})),this.TListNotification={0:"lnAdded",lnAdded:0,1:"lnExtracted",lnExtracted:1,2:"lnDeleted",lnDeleted:2},rtl.createClass(this,"TList",pas.System.TObject,(function(){this.$init=function(){pas.System.TObject.$init.call(this),this.FList=null},this.$final=function(){this.FList=void 0,pas.System.TObject.$final.call(this)},this.Get=function(e){return this.FList.Get(e)},this.Notify=function(e,t){pas.System.Assigned(e)},this.GetCount=function(){return this.FList.FCount},this.Create$1=function(){return pas.System.TObject.Create.call(this),this.FList=e.TFPList.$create("Create"),this},this.Destroy=function(){null!=this.FList&&this.Clear(),pas.SysUtils.FreeAndNil({p:this,get:function(){return this.p.FList},set:function(e){this.p.FList=e}})},this.Add=function(e){var t;return t=this.FList.Add(e),pas.System.Assigned(e)&&this.Notify(e,0),t},this.Clear=function(){for(;this.FList.FCount>0;)this.Delete(this.GetCount()-1)},this.Delete=function(e){var t;t=this.FList.Get(e),this.FList.Delete(e),pas.System.Assigned(t)&&this.Notify(t,2)},this.Insert=function(e,t){this.FList.Insert(e,t),pas.System.Assigned(t)&&this.Notify(t,0)}})),rtl.createClass(this,"TPersistent",pas.System.TObject,(function(){this.AssignError=function(e){var t="";throw t=null!==e?e.$classname:"Nil",pas.SysUtils.EConvertError.$create("Create$1",["Cannot assign a "+t+" to a "+this.$classname+"."])},this.AssignTo=function(e){e.AssignError(this)},this.Assign=function(e){null!==e?e.AssignTo(this):this.AssignError(null)},this.SetEvent=function(e,t,i){this.SetEvent$1(this,e,t,i)},this.SetEvent$1=function(e,t,i,a){var n=pas.System.TMethod.$new();if(n.Code=t.$class.MethodAddress(a),null===n.Code)throw pas.SysUtils.Exception.$create("Create$1",[t.$classname+' has no published method "'+a+'"']);n.Data=t,pas.TypInfo.SetMethodProp$1(e,i,n)}})),rtl.createClass(this,"TStrings",this.TPersistent,(function(){this.$init=function(){e.TPersistent.$init.call(this),this.FSpecialCharsInited=!1,this.FAlwaysQuote=!1,this.FQuoteChar="",this.FDelimiter="",this.FNameValueSeparator="",this.FUpdateCount=0,this.FLBS=0,this.FSkipLastLineBreak=!1,this.FStrictDelimiter=!1,this.FLineBreak=""},this.GetValue=function(e){var t,i="",a="";return i="",-1!==(t=this.IndexOfName(e))&&this.GetNameValue(t,{get:function(){return a},set:function(e){a=e}},{get:function(){return i},set:function(e){i=e}}),i},this.SetDelimiter=function(e){this.CheckSpecialChars(),this.FDelimiter=e},this.DoSetTextStr=function(e,t){var i="",a=0;try{for(this.BeginUpdate(),t&&this.Clear(),a=1;this.GetNextLinebreak(e,{get:function(){return i},set:function(e){i=e}},{get:function(){return a},set:function(e){a=e}});)this.Add(i)}finally{this.EndUpdate()}},this.GetNameValueSeparator=function(){return this.CheckSpecialChars(),this.FNameValueSeparator},this.GetSkipLastLineBreak=function(){return this.CheckSpecialChars(),this.FSkipLastLineBreak},this.SetSkipLastLineBreak=function(e){this.CheckSpecialChars(),this.FSkipLastLineBreak=e},this.Error=function(t,i){throw e.EStringListError.$create("CreateFmt",[t,pas.System.VarRecs(18,pas.SysUtils.IntToStr(i))])},this.GetCapacity=function(){return this.GetCount()},this.GetObject=function(e){return null,null},this.GetTextStr=function(){var e="",t=0,i="";if(this.CheckSpecialChars(),this.FLineBreak!==pas.System.sLineBreak)i=this.FLineBreak;else{var a=this.FLBS;0===a?i="\n":1===a?i="\r\n":2===a&&(i="\r")}e="";for(var n=0,s=this.GetCount()-1;n<=s;n++)t=n,e+=this.Get(t),(t32&&e.charAt(i-1)!==this.FDelimiter;)i+=1;this.Add(pas.System.Copy(e,t,i-t)),t=i}else a&&this.Add("");for(;t<=e.length&&e.charCodeAt(t-1)<=32;)t+=1;a=!0}}finally{this.EndUpdate()}},this.CheckSpecialChars=function(){this.FSpecialCharsInited||(this.FQuoteChar='"',this.FDelimiter=",",this.FNameValueSeparator="=",this.FLBS=pas.System.DefaultTextLineBreakStyle,this.FSpecialCharsInited=!0,this.FLineBreak=pas.System.sLineBreak)},this.GetNextLinebreak=function(e,t,i){var a,n,s=!1,o=0,r=0;return t.set(""),s=!1,e.length-i.get()<0?s:(a=e.indexOf("\n",i.get()-1)+1,n=e.indexOf("\r",i.get()-1)+1,r=1,a>0&&n>0?(a-n==1&&(r=2),o=a0&&n<1?a:n>0&&a<1?n:e.length+1,t.set(pas.System.Copy(e,i.get(),o-i.get())),i.set(o+r),s=!0)},this.Create$1=function(){return pas.System.TObject.Create.call(this),this.FAlwaysQuote=!1,this},this.Destroy=function(){pas.System.TObject.Destroy.call(this)},this.Add=function(e){var t;return t=this.GetCount(),this.Insert(this.GetCount(),e),t},this.AddObject=function(e,t){var i;return i=this.Add(e),this.PutObject(i,t),i},this.AddStrings=function(e){for(var t=0,i=0,a=e.GetCount()-1;i<=a;i++)t=i,this.AddObject(e.Get(t),e.GetObject(t))},this.Assign=function(t){var i=null;if(e.TStrings.isPrototypeOf(t)){i=t,this.BeginUpdate();try{this.Clear(),this.FSpecialCharsInited=i.FSpecialCharsInited,this.FQuoteChar=i.FQuoteChar,this.FDelimiter=i.FDelimiter,this.FNameValueSeparator=i.FNameValueSeparator,this.FLBS=i.FLBS,this.FLineBreak=i.FLineBreak,this.AddStrings(i)}finally{this.EndUpdate()}}else e.TPersistent.Assign.call(this,t)},this.BeginUpdate=function(){0===this.FUpdateCount&&this.SetUpdateState(!0),this.FUpdateCount+=1},this.EndUpdate=function(){this.FUpdateCount>0&&(this.FUpdateCount-=1),0===this.FUpdateCount&&this.SetUpdateState(!1)},this.IndexOf=function(e){var t=0;for(t=0;t=0&&0===this.DoCompareText(e,pas.System.Copy(a,1,i)))return t;t+=1}return t=-1},this.InsertObject=function(e,t,i){this.Insert(e,t),this.PutObject(e,i)},this.GetNameValue=function(e,t,i){var a;this.CheckSpecialChars(),i.set(this.Get(e)),0!==(a=pas.System.Pos(this.FNameValueSeparator,i.get()))?(t.set(pas.System.Copy(i.get(),1,a-1)),i.set(pas.System.Copy(i.get(),a+1,i.get().length-a))):t.set("")},this.$rtti.addMethod("Create$1",2,[])})),rtl.recNewT(this,"TStringItem",(function(){this.FString="",this.FObject=null,this.$eq=function(e){return this.FString===e.FString&&this.FObject===e.FObject},this.$assign=function(e){return this.FString=e.FString,this.FObject=e.FObject,this}})),this.TStringsSortStyle={0:"sslNone",sslNone:0,1:"sslUser",sslUser:1,2:"sslAuto",sslAuto:2},rtl.createClass(this,"TStringList",this.TStrings,(function(){this.$init=function(){e.TStrings.$init.call(this),this.FList=[],this.FCount=0,this.FOnChange=null,this.FOnChanging=null,this.FDuplicates=0,this.FCaseSensitive=!1,this.FOwnsObjects=!1,this.FSortStyle=0},this.$final=function(){this.FList=void 0,this.FOnChange=void 0,this.FOnChanging=void 0,e.TStrings.$final.call(this)},this.GetSorted=function(){return this.FSortStyle in rtl.createSet(1,2)},this.Grow=function(){var e=0;(e=this.GetCapacity())>=256?e+=rtl.trunc(e/4):0===e?e=4:e*=4,this.SetCapacity(e)},this.InternalClear=function(e,t){var i=0;if(e=this.FCount)&&this.Error(rtl.getResStr(pas.RTLConsts,"SListIndexError"),e)},this.Changed=function(){0===this.FUpdateCount&&null!=this.FOnChange&&this.FOnChange(this)},this.Changing=function(){0===this.FUpdateCount&&null!=this.FOnChanging&&this.FOnChanging(this)},this.Get=function(e){return this.CheckIndex(e),this.FList[e].FString},this.GetCapacity=function(){return rtl.length(this.FList)},this.GetCount=function(){return this.FCount},this.GetObject=function(e){return this.CheckIndex(e),this.FList[e].FObject},this.Put=function(e,t){this.GetSorted()&&this.Error(rtl.getResStr(pas.RTLConsts,"SSortedListError"),0),this.CheckIndex(e),this.Changing(),this.FList[e].FString=t,this.Changed()},this.PutObject=function(e,t){this.CheckIndex(e),this.Changing(),this.FList[e].FObject=t,this.Changed()},this.SetCapacity=function(t){t<0&&this.Error(rtl.getResStr(pas.RTLConsts,"SListCapacityError"),t),t!==this.GetCapacity()&&(this.FList=rtl.arraySetLength(this.FList,e.TStringItem,t))},this.SetUpdateState=function(e){e?this.Changing():this.Changed()},this.InsertItem=function(e,t){this.InsertItem$1(e,t,null)},this.InsertItem$1=function(t,i,a){var n=e.TStringItem.$new();this.Changing(),this.FCount===this.GetCapacity()&&this.Grow(),n.FString=i,n.FObject=a,this.FList.splice(t,0,n),this.FCount+=1,this.Changed()},this.DoCompareText=function(e,t){return this.FCaseSensitive?pas.SysUtils.CompareStr(e,t):pas.SysUtils.CompareText(e,t)},this.Destroy=function(){this.InternalClear(0,!1),e.TStrings.Destroy.call(this)},this.Add=function(e){var t=0;if(2!==this.FSortStyle)t=this.FCount;else if(this.Find(e,{get:function(){return t},set:function(e){t=e}})){var i=this.FDuplicates;if(0===i)return t;2===i&&this.Error(rtl.getResStr(pas.RTLConsts,"SDuplicateString"),0)}return this.InsertItem(t,e),t},this.Clear=function(){0!==this.FCount&&(this.Changing(),this.InternalClear(0,!1),this.Changed())},this.Delete=function(e){this.CheckIndex(e),this.Changing(),this.FOwnsObjects&&pas.SysUtils.FreeAndNil({p:this.FList[e],get:function(){return this.p.FObject},set:function(e){this.p.FObject=e}}),this.FList.splice(e,1),this.FList[this.GetCount()-1].FString="",this.FList[this.GetCount()-1].FObject=null,this.FCount-=1,this.Changed()},this.Find=function(t,i){var a=!1,n=0,s=0,o=0,r=0;if(a=!1,i.set(-1),!this.GetSorted())throw e.EListError.$create("Create$1",[rtl.getResStr(pas.RTLConsts,"SErrFindNeedsSortedList")]);for(n=0,s=this.GetCount()-1;n<=s;)o=n+rtl.trunc((s-n)/2),(r=this.DoCompareText(t,this.FList[o].FString))>0?n=o+1:(s=o-1,0===r&&(a=!0,1!==this.FDuplicates&&(n=o)));return i.set(n),a},this.IndexOf=function(t){var i=0;return this.GetSorted()?this.Find(t,{get:function(){return i},set:function(e){i=e}})||(i=-1):i=e.TStrings.IndexOf.call(this,t),i},this.Insert=function(e,t){2===this.FSortStyle?this.Error(rtl.getResStr(pas.RTLConsts,"SSortedListError"),0):((e<0||e>this.FCount)&&this.Error(rtl.getResStr(pas.RTLConsts,"SListIndexError"),e),this.InsertItem(e,t))}})),rtl.createClass(this,"TCollectionItem",this.TPersistent,(function(){this.$init=function(){e.TPersistent.$init.call(this),this.FCollection=null,this.FID=0},this.$final=function(){this.FCollection=void 0,e.TPersistent.$final.call(this)},this.SetCollection=function(e){e!==this.FCollection&&(null!=this.FCollection&&this.FCollection.RemoveItem(this),null!=e&&e.InsertItem(this))},this.Create$1=function(e){return pas.System.TObject.Create.call(this),this.SetCollection(e),this},this.Destroy=function(){this.SetCollection(null),pas.System.TObject.Destroy.call(this)},this.$rtti.addMethod("Create$1",2,[["ACollection",e.$rtti.TCollection]])})),this.TCollectionNotification={0:"cnAdded",cnAdded:0,1:"cnExtracting",cnExtracting:1,2:"cnDeleting",cnDeleting:2},rtl.createClass(this,"TCollection",this.TPersistent,(function(){this.$init=function(){e.TPersistent.$init.call(this),this.FItemClass=null,this.FItems=null,this.FUpdateCount=0,this.FNextID=0,this.FPropName=""},this.$final=function(){this.FItemClass=void 0,this.FItems=void 0,e.TPersistent.$final.call(this)},this.GetCount=function(){return this.FItems.FCount},this.InsertItem=function(e){this.FItemClass.isPrototypeOf(e)&&(this.FItems.Add(e),e.FCollection=this,e.FID=this.FNextID,this.FNextID+=1,this.SetItemName(e),this.Notify(e,0),this.Changed())},this.RemoveItem=function(e){var t;this.Notify(e,1),-1!==(t=this.FItems.IndexOfItem(e,1))&&this.FItems.Delete(t),e.FCollection=null,this.Changed()},this.DoClear=function(){for(var e=null;this.FItems.FCount>0;)null!=(e=rtl.getObject(this.FItems.Last()))&&e.$destroy("Destroy")},this.Changed=function(){0===this.FUpdateCount&&this.Update(null)},this.GetItem=function(e){return rtl.getObject(this.FItems.Get(e))},this.SetItemName=function(e){},this.Update=function(e){},this.Notify=function(e,t){},this.Create$1=function(t){return pas.System.TObject.Create.call(this),this.FItemClass=t,this.FItems=e.TFPList.$create("Create"),this},this.Destroy=function(){this.FUpdateCount=1;try{this.DoClear()}finally{this.FUpdateCount=0}null!=this.FItems&&this.FItems.$destroy("Destroy"),pas.System.TObject.Destroy.call(this)},this.Add=function(){return this.FItemClass.$create("Create$1",[this])},this.Assign=function(t){var i=0;if(e.TCollection.isPrototypeOf(t)){this.Clear();for(var a=0,n=t.GetCount()-1;a<=n;a++)i=a,this.Add().Assign(t.GetItem(i))}else e.TPersistent.Assign.call(this,t)},this.BeginUpdate=function(){this.FUpdateCount+=1},this.Clear=function(){if(0!==this.FItems.FCount){this.BeginUpdate();try{this.DoClear()}finally{this.EndUpdate()}}},this.EndUpdate=function(){this.FUpdateCount>0&&(this.FUpdateCount-=1),0===this.FUpdateCount&&this.Changed()},this.Delete=function(e){var t=null;t=rtl.getObject(this.FItems.Get(e)),this.Notify(t,2),null!=t&&t.$destroy("Destroy")},this.$rtti.addMethod("Create$1",2,[["AItemClass",e.$rtti.TCollectionItemClass]])})),rtl.createClass(this,"TOwnedCollection",this.TCollection,(function(){this.$init=function(){e.TCollection.$init.call(this),this.FOwner=null},this.$final=function(){this.FOwner=void 0,e.TCollection.$final.call(this)},this.Create$2=function(t,i){return this.FOwner=t,e.TCollection.Create$1.call(this,i),this},this.$rtti.addMethod("Create$2",2,[["AOwner",e.$rtti.TPersistent],["AItemClass",e.$rtti.TCollectionItemClass]])})),this.TOperation={0:"opInsert",opInsert:0,1:"opRemove",opRemove:1},this.TComponentStateItem={0:"csLoading",csLoading:0,1:"csReading",csReading:1,2:"csWriting",csWriting:2,3:"csDestroying",csDestroying:3,4:"csDesigning",csDesigning:4,5:"csAncestor",csAncestor:5,6:"csUpdating",csUpdating:6,7:"csFixups",csFixups:7,8:"csFreeNotification",csFreeNotification:8,9:"csInline",csInline:9,10:"csDesignInstance",csDesignInstance:10},this.TComponentStyleItem={0:"csInheritable",csInheritable:0,1:"csCheckPropAvail",csCheckPropAvail:1,2:"csSubComponent",csSubComponent:2,3:"csTransient",csTransient:3},this.$rtti.$inherited("TComponentName",rtl.string,{}),rtl.createClass(this,"TComponent",this.TPersistent,(function(){this.$init=function(){e.TPersistent.$init.call(this),this.FOwner=null,this.FName="",this.FTag=0,this.FComponents=null,this.FFreeNotifies=null,this.FComponentState={},this.FComponentStyle={},this.FLeft=0,this.FTop=0},this.$final=function(){this.FOwner=void 0,this.FComponents=void 0,this.FFreeNotifies=void 0,this.FComponentState=void 0,this.FComponentStyle=void 0,e.TPersistent.$final.call(this)},this.GetComponent=function(e){return null==this.FComponents?null:rtl.getObject(this.FComponents.Get(e))},this.GetComponentCount=function(){return null==this.FComponents?0:this.FComponents.FCount},this.Insert=function(t){null==this.FComponents&&(this.FComponents=e.TFPList.$create("Create")),this.FComponents.Add(t),t.FOwner=this},this.Remove=function(e){e.FOwner=null,null!=this.FComponents&&(this.FComponents.Remove(e),0===this.FComponents.FCount&&(this.FComponents.$destroy("Destroy"),this.FComponents=null))},this.RemoveNotification=function(e){null!==this.FFreeNotifies&&(this.FFreeNotifies.Remove(e),0===this.FFreeNotifies.FCount&&(this.FFreeNotifies.$destroy("Destroy"),this.FFreeNotifies=null,this.FComponentState=rtl.excludeSet(this.FComponentState,8)))},this.SetReference=function(e){var t=null,i=null,a=null;""!==this.FName&&null!=this.FOwner&&(a=this.FOwner,null!=(t=this.FOwner.$class.FieldAddress(this.FName))&&(i=e?this:null,a[""+t.name]=i))},this.ChangeName=function(e){this.FName=e},this.Loaded=function(){this.FComponentState=rtl.excludeSet(this.FComponentState,0)},this.Loading=function(){this.FComponentState=rtl.includeSet(this.FComponentState,0)},this.Notification=function(e,t){var i=0;if(1===t&&this.RemoveFreeNotification(e),null!=this.FComponents)for(i=this.FComponents.FCount-1;i>=0;)rtl.getObject(this.FComponents.Get(i)).Notification(e,t),(i-=1)>=this.FComponents.FCount&&(i=this.FComponents.FCount-1)},this.SetDesigning=function(e,t){var i=0;if(this.FComponentState=e?rtl.includeSet(this.FComponentState,4):rtl.excludeSet(this.FComponentState,4),null!=this.FComponents&&t)for(var a=0,n=this.FComponents.FCount-1;a<=n;a++)i=a,rtl.getObject(this.FComponents.Get(i)).SetDesigning(e,!0)},this.SetName=function(t){if(this.FName!==t){if(""!==t&&!pas.SysUtils.IsValidIdent(t,!1,!1))throw e.EComponentError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SInvalidName"),pas.System.VarRecs(18,t)]);null!=this.FOwner?this.FOwner.ValidateRename(this,this.FName,t):this.ValidateRename(null,this.FName,t),this.SetReference(!1),this.ChangeName(t),this.SetReference(!0)}},this.SetParentComponent=function(e){},this.ValidateRename=function(t,i,a){if(null!==t&&0!==pas.SysUtils.CompareText(i,a)&&t.FOwner===this&&null!==this.FindComponent(a))throw e.EComponentError.$create("CreateFmt",[rtl.getResStr(pas.RTLConsts,"SDuplicateName"),pas.System.VarRecs(18,a)]);4 in this.FComponentState&&null!==this.FOwner&&this.FOwner.ValidateRename(t,i,a)},this.ValidateContainer=function(e){e.ValidateInsert(this)},this.ValidateInsert=function(e){},this.GetLeft=function(){return this.FLeft},this.GetTop=function(){return this.FTop},this.SetLeft=function(e){this.FLeft=e},this.SetTop=function(e){this.FTop=e},this.Create$1=function(e){return this.FComponentStyle=rtl.createSet(0),null!=e&&e.InsertComponent(this),this},this.Destroy=function(){var e=0,t=null;if(this.Destroying(),null!=this.FFreeNotifies){for(e=this.FFreeNotifies.FCount-1;e>=0;)t=rtl.getObject(this.FFreeNotifies.Get(e)),this.FFreeNotifies.Delete(e),t.Notification(this,1),null===this.FFreeNotifies?e=0:e>this.FFreeNotifies.FCount&&(e=this.FFreeNotifies.FCount),e-=1;pas.SysUtils.FreeAndNil({p:this,get:function(){return this.p.FFreeNotifies},set:function(e){this.p.FFreeNotifies=e}})}this.DestroyComponents(),null!==this.FOwner&&this.FOwner.RemoveComponent(this),pas.System.TObject.Destroy.call(this)},this.BeforeDestruction=function(){3 in this.FComponentState||this.Destroying()},this.DestroyComponents=function(){for(var e=null;null!=this.FComponents;)e=rtl.getObject(this.FComponents.Last()),this.Remove(e),e.$destroy("Destroy")},this.Destroying=function(){var e=0;if(!(3 in this.FComponentState)&&(this.FComponentState=rtl.includeSet(this.FComponentState,3),null!=this.FComponents))for(var t=0,i=this.FComponents.FCount-1;t<=i;t++)e=t,rtl.getObject(this.FComponents.Get(e)).Destroying()},this.AfterLoadDFMValues=function(){this.EndUpdate(),this.Loaded()},this.BeforeLoadDFMValues=function(){4 in this.FComponentState||this.Loading(),this.BeginUpdate()},this.BeginUpdate=function(){},this.EndUpdate=function(){},this.FindComponent=function(e){var t=null,i=0;if(t=null,""===e||null==this.FComponents)return t;for(var a=0,n=this.FComponents.FCount-1;a<=n;a++)if(i=a,0===pas.SysUtils.CompareText(rtl.getObject(this.FComponents.Get(i)).FName,e))return t=rtl.getObject(this.FComponents.Get(i));return t},this.RemoveFreeNotification=function(e){this.RemoveNotification(e),e.RemoveNotification(this)},this.InsertComponent=function(e){e.ValidateContainer(this),this.ValidateRename(e,"",e.FName),null!==e.FOwner&&e.FOwner.RemoveComponent(e),this.Insert(e),4 in this.FComponentState&&e.SetDesigning(!0,!0),this.Notification(e,0)},this.RemoveComponent=function(e){this.Notification(e,1),this.Remove(e),e.SetDesigning(!1,!0),this.ValidateRename(e,e.FName,"")};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",t]]),t.addProperty("Name",6,e.$rtti.TComponentName,"FName","SetName"),t.addProperty("Tag",0,rtl.nativeint,"FTag","FTag",{Default:0})})),rtl.createClass(this,"TLoadHelper",pas.System.TObject,(function(){})),this.TShiftState$a={0:"ssShift",ssShift:0,1:"ssAlt",ssAlt:1,2:"ssCtrl",ssCtrl:2,3:"ssLeft",ssLeft:3,4:"ssRight",ssRight:4,5:"ssMIDdle",ssMIDdle:5,6:"ssDouble",ssDouble:6,7:"ssTouch",ssTouch:7,8:"ssPen",ssPen:8,9:"ssCommand",ssCommand:9},this.$rtti.$Enum("TShiftState$a",{minvalue:0,maxvalue:9,ordtype:1,enumtype:this.TShiftState$a}),this.$rtti.$Set("TShiftState",{comptype:this.$rtti.TShiftState$a}),this.GetClass=function(e){var i=null;return i=null,""===e?i:t.ClassList.hasOwnProperty(e)?i=rtl.getObject(t.ClassList[e]):i},this.SetLoadHelperClass=function(e){var i;return i=t.GlobalLoadHelper,t.GlobalLoadHelper=e,i},e.$implcode=function(){t.GlobalLoadHelper=null,t.ClassList=null},e.$init=function(){t.ClassList=new Object}}),["Web"]),rtl.module("WEBLib.Consts",["System"],(function(){"use strict";this.$resourcestrings={SWarning:{org:"Warning"},SError:{org:"Error"},SInformation:{org:"Information"},SConfirm:{org:"Confirm"},SOK:{org:"OK"},SCancel:{org:"Cancel"},SYes:{org:"Yes"},SNo:{org:"No"},SAbort:{org:"Abort"},SRetry:{org:"Retry"},SIgnore:{org:"Ignore"},SHelp:{org:"Help"},SClose:{org:"Close"},SAll:{org:"All"},SYesToAll:{org:"Yes to all"},SNoToAll:{org:"No to all"},SWarningFR:{org:"Avertissement"},SErrorFR:{org:"Erreur"},SInformationFR:{org:"Information"},SConfirmFR:{org:"Confirmer"},SOKFR:{org:"OK"},SCancelFR:{org:"Annuler"},SYesFR:{org:"Oui"},SNoFR:{org:"Non"},SAbortFR:{org:"Interrompre"},SRetryFR:{org:"Réessayer"},SIgnoreFR:{org:"Ignorer"},SHelpFR:{org:"Aide"},SCloseFR:{org:"Fermer"},SAllFR:{org:"Tout"},SYesToAllFR:{org:"Oui à tout"},SNoToAllFR:{org:"Non à tout"},SWarningDE:{org:"Warnung"},SErrorDE:{org:"Fehler"},SInformationDE:{org:"Information"},SConfirmDE:{org:"Bestätigen"},SOKDE:{org:"OK"},SCancelDE:{org:"Abbrechen"},SYesDE:{org:"Ja"},SNoDE:{org:"Nein"},SAbortDE:{org:"Abbrechen"},SRetryDE:{org:"Wiederholen"},SIgnoreDE:{org:"Ignorieren"},SHelpDE:{org:"Hilfe"},SCloseDE:{org:"Schließen"},SAllDE:{org:"Alles"},SYesToAllDE:{org:"Ja auf Alles"},SNoToAllDE:{org:"Nein auf Alles"},SWarningES:{org:"Advertencia"},SErrorES:{org:"Error"},SInformationES:{org:"Información"},SConfirmES:{org:"Confirmado"},SOKES:{org:"OK"},SCancelES:{org:"Cancelar"},SYesES:{org:"Sí"},SNoES:{org:"No"},SAbortES:{org:"Abortar"},SRetryES:{org:"Rever"},SIgnoreES:{org:"Ignorar"},SHelpES:{org:"Ayudar"},SCloseES:{org:"Cerrar"},SAllES:{org:"Todos"},SYesToAllES:{org:"Sí a todo"},SNoToAllES:{org:"No a todo"},SWarningNL:{org:"Waarschuwing"},SErrorNL:{org:"Fout"},SInformationNL:{org:"Informatie"},SConfirmNL:{org:"Bevestiging"},SOKNL:{org:"OK"},SCancelNL:{org:"Afbreken"},SYesNL:{org:"Ja"},SNoNL:{org:"Nee"},SAbortNL:{org:"Afbreken"},SRetryNL:{org:"Opnieuw"},SIgnoreNL:{org:"Negeren"},SHelpNL:{org:"Hulp"},SCloseNL:{org:"Sluiten"},SAllNL:{org:"Alles"},SYesToAllNL:{org:"Ja op alles"},SNoToAllNL:{org:"Nee op alles"}}})),rtl.module("WEBLib.Dialogs",["System","Classes","WEBLib.Controls","Web","JS","SysUtils","WEBLib.WebTools","WEBLib.Graphics"],(function(){"use strict";var e=this,t=e.$impl;this.TMsgDlgType={0:"mtWarning",mtWarning:0,1:"mtError",mtError:1,2:"mtInformation",mtInformation:2,3:"mtConfirmation",mtConfirmation:3,4:"mtCustom",mtCustom:4},this.$rtti.$Enum("TMsgDlgType",{minvalue:0,maxvalue:4,ordtype:1,enumtype:this.TMsgDlgType}),this.TMsgDlgBtn={0:"mbYes",mbYes:0,1:"mbNo",mbNo:1,2:"mbOK",mbOK:2,3:"mbCancel",mbCancel:3,4:"mbAbort",mbAbort:4,5:"mbRetry",mbRetry:5,6:"mbIgnore",mbIgnore:6,7:"mbAll",mbAll:7,8:"mbNoToAll",mbNoToAll:8,9:"mbYesToAll",mbYesToAll:9,10:"mbHelp",mbHelp:10,11:"mbClose",mbClose:11},this.$rtti.$Enum("TMsgDlgBtn",{minvalue:0,maxvalue:11,ordtype:1,enumtype:this.TMsgDlgBtn}),this.$rtti.$Set("TMsgDlgButtons",{comptype:this.$rtti.TMsgDlgBtn}),rtl.createClass(this,"TCustomDialogButton",pas.Classes.TCollectionItem,(function(){this.$init=function(){pas.Classes.TCollectionItem.$init.call(this),this.FCaption="",this.FTag=0,this.FElementClassName=""};var e=this.$rtti;e.addProperty("Caption",0,rtl.string,"FCaption","FCaption"),e.addProperty("ElementClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","FElementClassName"),e.addProperty("Tag",0,rtl.longint,"FTag","FTag",{Default:0})})),rtl.createClass(this,"TCustomDialogButtons",pas.Classes.TOwnedCollection,(function(){this.GetItem$1=function(e){return this.GetItem(e)}})),rtl.createClass(this,"TMessageDlg",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FOpacity=0,this.FLayer$1=null,this.FDlg=null,this.FCancel=null,this.FMessage="",this.FTitle="",this.FMsgDlgType=0,this.FOnButtonClick=null,this.FOnClose=null,this.FButtons={},this.FDialogProc=null,this.FDialogResult=0,this.FMdx=0,this.FMdy=0,this.FDlgX=0,this.FDlgY=0,this.FCaptured$1=!1,this.FDown=!1,this.FElementTitleClassName="",this.FElementButtonClassName="",this.FElementContentClassName="",this.FDialogText=null,this.FCustomButtons=null,this.FElementDialogClassName="",this.FAutoLanguage=!1},this.$final=function(){this.FLayer$1=void 0,this.FDlg=void 0,this.FCancel=void 0,this.FOnButtonClick=void 0,this.FOnClose=void 0,this.FButtons=void 0,this.FDialogProc=void 0,this.FDialogText=void 0,this.FCustomButtons=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.SetDialogText=function(e){this.FDialogText.Assign(e)},this.SetCustomButtons=function(e){this.FCustomButtons.Assign(e)},this.CreateElement=function(){var e=null;return 4 in this.FComponentState?e=null:pas["WEBLib.Controls"].TCustomControl.CreateElement.call(this),e};this.GetDialogText=function(e){var t="",i="",a=0;if(t="Undefined",e0)for(var a=0,n=this.FCustomButtons.GetCount()-1;a<=n;a++)if(i=a,t===this.FCustomButtons.GetItem$1(i).FCaption){this.SetDialogResult(100+i);break}return null!=this.FOnButtonClick&&this.FOnButtonClick(this),!0,!0},this.HandleKeyDown=function(e){var t,i=!1;return t=this.GetKeyCode(e.key,!0),pas.System.Assigned(t)?(27===t&&this.SetDialogResult(2),i=!0):i},this.InitBootstrapStyle=function(){this.FElementButtonClassName="btn",this.FElementContentClassName="text-body",this.FElementTitleClassName="text-body",this.FElementDialogClassName="shadow-lg p-3 mb-5 bg-white rounded"},this.InsertInputElement=function(e,t){},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FOpacity=.2,this.FMessage="",this.FAutoLanguage=!0,this.FMsgDlgType=2,this.FDialogText=pas.Classes.TStringList.$create("Create$1"),this.FDialogText.SetSkipLastLineBreak(!0),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SWarning")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SError")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SInformation")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SConfirm")),this.FDialogText.Add("Custom"),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SOK")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SCancel")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SYes")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SNo")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SAbort")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SRetry")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SIgnore")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SAll")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SYesToAll")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SNoToAll")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SHelp")),this.FDialogText.Add(rtl.getResStr(pas["WEBLib.Consts"],"SClose")),this.FMsgDlgType=4,this.FCustomButtons=e.TCustomDialogButtons.$create("Create$2",[this,e.TCustomDialogButton]),this.FCustomButtons.FPropName="CustomButtons"},this.Destroy=function(){rtl.free(this,"FDialogText"),rtl.free(this,"FCustomButtons"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)},this.Close=function(){pas["WEBLib.Forms"].Application.UnLockForm(pas["WEBLib.Forms"].Application.FMainForm),document.body.removeChild(this.FLayer$1),document.body.removeChild(this.FDlg),this.FDown=!1,this.FCaptured$1=!1,null!=this.FOnClose&&this.FOnClose(this),null!=this.FDialogProc&&this.FDialogProc(this.FDialogResult)},this.Show$1=function(){var e=null,i=null,a=null,n=null,s=null,o=null,r=null,l=null,h=null,c=null,d=null,m=null,p="",u="",g="",S="",F="",b="",C="",f=!1,y=0;if(null!==pas["WEBLib.Forms"].Application&&null!==pas["WEBLib.Forms"].Application.FMainForm){pas["WEBLib.Forms"].Application.HasCSS(t.lMaterial)||this.AddControlLink("material",t.lMaterial),pas["WEBLib.Forms"].Application.LockForm(pas["WEBLib.Forms"].Application.FMainForm),this.FLayer$1=document.createElement("SPAN"),document.body.appendChild(this.FLayer$1),this.FLayer$1.setAttribute("tabindex","0"),this.FLayer$1.addEventListener("keydown",rtl.createCallback(this,"HandleKeyDown")),f=!0,this.FMessage=t.StringToHTML(this.FMessage);var v=this.FMsgDlgType;0===v?(p="warning",u="orange",g=this.GetDialogText(0)):1===v?(p="cancel",u="red",g=this.GetDialogText(1)):2===v?(p="info",u="blue",g=this.GetDialogText(2)):3===v?(p="help",u="blue",g=this.GetDialogText(3)):4===v&&(p="",u="",g=this.GetDialogText(4)),""!==this.FTitle&&(g=this.FTitle),1===pas["WEBLib.Forms"].Application.FMainForm.FCSSLibrary?(this.FDlg=document.createElement("DIV"),this.FDlg.setAttribute("class","modal-dialog"),this.FDlg.setAttribute("role","document"),this.FDlg.style.setProperty("z-index","1999998"),(l=document.createElement("DIV")).style.setProperty("top","0"),l.style.setProperty("left","0"),l.style.setProperty("right","0"),l.style.setProperty("bottom","0"),l.style.setProperty("z-index","1999997"),l.style.setProperty("display","block"),l.setAttribute("class","modal show fade"),document.body.appendChild(l),l.appendChild(this.FDlg),d=this.FDlg,(c=document.createElement("DIV")).setAttribute("class","modal-content "+this.FElementDialogClassName),d.appendChild(c),m=c,d=c,(c=document.createElement("DIV")).setAttribute("class","modal-header"),m.appendChild(c),d=c,(c=document.createElement("H5")).setAttribute("class","modal-title"),c.innerHTML=g,d.appendChild(c),3 in this.FButtons&&((c=document.createElement("BUTTON")).setAttribute("type","button"),c.setAttribute("class","close btn btn-danger"),c.setAttribute("data-dismiss","modal-dialog"),c.setAttribute("aria-label","Close"),c.setAttribute("id",this.GetDialogText(6)),c.addEventListener("click",rtl.createCallback(this,"HandleButtonClick")),d.appendChild(c),d=c,(c=document.createElement("SPAN")).setAttribute("aria-hidden","true"),c.setAttribute("id",this.GetDialogText(6)),c.innerHTML="×",d.appendChild(c)),(c=document.createElement("DIV")).setAttribute("class","modal-body"),m.appendChild(c),d=c,4!==this.FMsgDlgType&&((a=document.createElement("SPAN")).innerHTML=''+p+"",a.style.setProperty("display","inline-block"),a.style.setProperty("float","left"),a.style.setProperty("padding-right","15px"),d.appendChild(a)),(c=document.createElement("H6")).innerHTML=this.FMessage,d.appendChild(c),this.InsertInputElement(d,{get:function(){return f},set:function(e){f=e}}),(c=document.createElement("DIV")).setAttribute("class","modal-footer"),m.appendChild(c),o=d=c,this.FDlg=l):(C="5",b="26",F="#f1f1f1",S="#ababab",this.FDlg=document.createElement("DIV"),document.body.appendChild(this.FDlg),r=this.FDlg,""!==this.FElementDialogClassName?r.setAttribute("class",this.FElementDialogClassName):(r.style.setProperty("background-color","white"),r.style.setProperty("border","1px solid "+S),r.style.setProperty("font-family","Arial"),r.style.setProperty("font-size","10pt")),r.style.setProperty("cursor","default"),r.style.setProperty("position","fixed"),r.style.setProperty("min-width","300px"),r.style.setProperty("min-height","125px"),r.style.setProperty("max-width","100%"),r.style.setProperty("max-height","100%"),r.style.setProperty("top","50%"),r.style.setProperty("left","50%"),r.style.setProperty("transform","translate(-50%, -50%)"),r.style.setProperty("z-index","1999998"),r.style.setProperty("box-shadow","5px 5px 5px gray"),h=document.createElement("DIV"),this.FCancel=h,h.innerHTML='clear',h.id="Cancel",h.style.setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(pas["WEBLib.Forms"].Application.FThemeTextColor)),h.style.setProperty("position","fixed"),h.style.setProperty("top","0"),h.style.setProperty("right","0"),h.style.setProperty("padding",C+"px"),h.style.setProperty("height",b+"px"),h.style.setProperty("line-height",b+"px"),h.addEventListener("click",rtl.createCallback(this,"HandleButtonClick")),r.appendChild(h),(e=document.createElement("DIV")).innerHTML=g,""!==this.FElementTitleClassName?e.setAttribute("class",this.FElementTitleClassName):(e.style.setProperty("background-color",pas["WEBLib.Graphics"].ColorToHTML(pas["WEBLib.Forms"].Application.FThemeColor)),e.style.setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(pas["WEBLib.Forms"].Application.FThemeTextColor))),e.style.setProperty("cursor","move"),e.style.setProperty("padding-left",C+"px"),e.style.setProperty("height",b+"px"),e.style.setProperty("vertical-align","middle"),e.style.setProperty("line-height",b+"px"),e.style.setProperty("border-bottom","1px solid "+S),e.style.setProperty("-moz-user-select","none"),e.style.setProperty("-webkit-user-select","none"),e.style.setProperty("-ms-user-select","none"),e.style.setProperty("user-select","none"),e.style.setProperty("-o-user-select","none"),e.addEventListener("mousedown",rtl.createCallback(this,"HandleMouseDown")),r.appendChild(e),(i=document.createElement("DIV")).style.setProperty("padding",C+"px"),i.style.setProperty("height","auto"),i.style.setProperty("min-height","50px"),i.style.setProperty("border-bottom","1px solid "+S),4!==this.FMsgDlgType&&((a=document.createElement("DIV")).innerHTML=''+p+"",a.style.setProperty("display","inline-block"),a.style.setProperty("float","left"),a.style.setProperty("padding-right","15px"),i.appendChild(a)),this.FMessage=pas.SysUtils.StringReplace(this.FMessage,pas.System.sLineBreak,"
",rtl.createSet(0)),(s=document.createElement("DIV")).innerHTML=this.FMessage,s.style.setProperty("height","auto"),s.style.setProperty("min-height","50px"),s.style.setProperty("white-space","pre-wrap"),(n=document.createElement("LABEL")).innerHTML=this.FMessage,""!==this.FElementTitleClassName&&n.setAttribute("class",this.FElementContentClassName),s.appendChild(n),i.appendChild(n),this.InsertInputElement(i,{get:function(){return f},set:function(e){f=e}}),r.appendChild(i),(o=document.createElement("DIV")).style.setProperty("background-color",F),o.style.setProperty("padding",C+"px"),o.style.setProperty("min-height",b+"px"),o.style.setProperty("height","auto"),o.style.setProperty("line-height",b+"px"),o.style.setProperty("text-align","right"),r.appendChild(o)),rtl.eqSet(this.FButtons,{})&&0===this.FCustomButtons.GetCount()?o.appendChild(this.CreateButton(this.GetDialogText(5),{get:function(){return f},set:function(e){f=e}},"")):(0 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(7),{get:function(){return f},set:function(e){f=e}},"")),1 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(8),{get:function(){return f},set:function(e){f=e}},"")),2 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(5),{get:function(){return f},set:function(e){f=e}},"")),3 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(6),{get:function(){return f},set:function(e){f=e}},"")),4 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(9),{get:function(){return f},set:function(e){f=e}},"")),5 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(10),{get:function(){return f},set:function(e){f=e}},"")),6 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(11),{get:function(){return f},set:function(e){f=e}},"")),7 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(12),{get:function(){return f},set:function(e){f=e}},"")),9 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(13),{get:function(){return f},set:function(e){f=e}},"")),8 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(14),{get:function(){return f},set:function(e){f=e}},"")),10 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(15),{get:function(){return f},set:function(e){f=e}},"")),11 in this.FButtons&&o.appendChild(this.CreateButton(this.GetDialogText(16),{get:function(){return f},set:function(e){f=e}},"")));for(var T=0,E=this.FCustomButtons.GetCount()-1;T<=E;T++)y=T,o.appendChild(this.CreateButton(this.FCustomButtons.GetItem$1(y).FCaption,{get:function(){return f},set:function(e){f=e}},this.FCustomButtons.GetItem$1(y).FElementClassName));(l=this.FLayer$1).style.setProperty("background-color","black"),l.style.setProperty("opacity",pas["WEBLib.WebTools"].DoubleToHTML(this.FOpacity)),l.style.setProperty("top","0"),l.style.setProperty("left","0"),l.style.setProperty("right","0"),l.style.setProperty("bottom","0"),l.style.setProperty("z-index",pas["WEBLib.Forms"].Application.MaxZIndexStr()),l.style.setProperty("webkit-user-select","none"),l.style.setProperty("moz-user-select","none"),l.style.setProperty("khtml-user-select","none"),l.style.setProperty("ms-user-select","none"),l.style.setProperty("user-select","none"),l.style.setProperty("position","fixed")}},this.ShowDialog$1=function(e,t,i,a){return 0,this.FButtons=rtl.refSet(i),this.FMessage=e,this.FMsgDlgType=t,this.FDialogProc=a,this.SetDialogResult(0),this.Show$1(),0};var i=this.$rtti;i.addProperty("AutoLanguage",0,rtl.boolean,"FAutoLanguage","FAutoLanguage",{Default:!0}),i.addProperty("Buttons",0,e.$rtti.TMsgDlgButtons,"FButtons","FButtons",{Default:{}}),i.addProperty("CustomButtons",2,e.$rtti.TCustomDialogButtons,"FCustomButtons","SetCustomButtons"),i.addProperty("DialogText",2,pas.Classes.$rtti.TStringList,"FDialogText","SetDialogText"),i.addProperty("DialogType",0,e.$rtti.TMsgDlgType,"FMsgDlgType","FMsgDlgType",{Default:e.TMsgDlgType.mtCustom}),i.addProperty("Message",0,rtl.string,"FMessage","FMessage"),i.addProperty("Opacity",0,rtl.double,"FOpacity","FOpacity"),i.addProperty("ElementButtonClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementButtonClassName","FElementButtonClassName"),i.addProperty("ElementDialogClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementDialogClassName","FElementDialogClassName"),i.addProperty("ElementTitleClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementTitleClassName","FElementTitleClassName"),i.addProperty("ElementContentClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementContentClassName","FElementContentClassName"),i.addProperty("Title",0,rtl.string,"FTitle","FTitle"),i.addProperty("OnButtonClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnButtonClick","FOnButtonClick"),i.addProperty("OnClose",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClose","FOnClose")})),this.MessageDlg=function(i,a,n,s){null==t.WebLibDlg&&(t.WebLibDlg=e.TMessageDlg.$create("Create$1",[null]),1===pas["WEBLib.Forms"].Application.FMainForm.FCSSLibrary&&t.WebLibDlg.InitBootstrapStyle()),t.WebLibDlg.ShowDialog$1(i,a,rtl.refSet(n),s)},this.ShowMessage=function(t){null!==pas["WEBLib.Forms"].Application&&null!==pas["WEBLib.Forms"].Application.FMainForm&&1===pas["WEBLib.Forms"].Application.FMainForm.FCSSLibrary?e.MessageDlg(t,2,rtl.createSet(2),null):alert(t)},e.$implcode=function(){t.lMaterial="https://fonts.googleapis.com/icon?family=Material+Icons",t.WebLibDlg=null,t.StringToHTML=function(e){var t="";return t=pas.SysUtils.StringReplace(e,"\r","
",rtl.createSet(0)),t=pas.SysUtils.StringReplace(t,"\n","",rtl.createSet(0))}},e.$init=function(){t.WebLibDlg=null}}),["WEBLib.Forms","WEBLib.Consts"]),rtl.module("Math",["System"],(function(){"use strict";var e=this.$impl;this.SameValue=function(e,t,i){return 0===i&&(i=Math.max(1e-12*Math.min(Math.abs(e),Math.abs(t)),1e-12)),e>t?e-t<=i:t-e<=i},this.$implcode=function(){e.DZeroResolution=1e-12}}),[]),rtl.module("WEBLib.Storage",["System","Web","Classes"],(function(){"use strict";var e=this;this.$rtti.$MethodVar("TStorageChangeEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["AKey",rtl.string],["AOldValue",rtl.string],["ANewValue",rtl.string],["AURL",rtl.string]]),methodkind:0}),rtl.createClass(this,"TLocalStorage",pas.Classes.TComponent,(function(){this.$init=function(){pas.Classes.TComponent.$init.call(this),this.FChangePtr=null,this.FOnChange=null},this.$final=function(){this.FOnChange=void 0,pas.Classes.TComponent.$final.call(this)},this.SetValues=function(e,t){window.localStorage.setItem(e,t)},this.StorageChanged=function(e){var t;t=e.storageArea+" ",null!=this.FOnChange&&pas.System.Pos("OBJECT",pas.SysUtils.UpperCase(t))>0&&this.FOnChange(this,e.key,e.oldValue,e.newValue,e.url)},this.Create$1=function(e){return this.FChangePtr=rtl.createCallback(this,"StorageChanged"),pas.Classes.TComponent.Create$1.apply(this,arguments),window.addEventListener("storage",this.FChangePtr),this},this.Destroy=function(){window.removeEventListener("storage",this.FChangePtr),pas.Classes.TComponent.Destroy.call(this)};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("OnChange",0,e.$rtti.TStorageChangeEvent,"FOnChange","FOnChange")}))}),["SysUtils"]),rtl.module("WEBLib.REST",["System","Classes","Web","JS","SysUtils","WEBLib.Controls"],(function(){"use strict";var e=this;this.THTTPCommand={0:"httpGET",httpGET:0,1:"httpPOST",httpPOST:1,2:"httpPUT",httpPUT:2,3:"httpDELETE",httpDELETE:3,4:"httpHEAD",httpHEAD:4,5:"httpPATCH",httpPATCH:5,6:"httpCUSTOM",httpCUSTOM:6},this.$rtti.$Enum("THTTPCommand",{minvalue:0,maxvalue:6,ordtype:1,enumtype:this.THTTPCommand}),this.THTTPRequestResponseType={0:"rtDefault",rtDefault:0,1:"rtText",rtText:1,2:"rtBlob",rtBlob:2,3:"rtJSON",rtJSON:3,4:"rtDocument",rtDocument:4,5:"rtArrayBuffer",rtArrayBuffer:5},this.$rtti.$Enum("THTTPRequestResponseType",{minvalue:0,maxvalue:5,ordtype:1,enumtype:this.THTTPRequestResponseType}),this.$rtti.$MethodVar("THTTPProgressEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Position",rtl.nativeint],["Total",rtl.nativeint]]),methodkind:0}),rtl.createClass(this,"THttpRequest",pas.Classes.TComponent,(function(){this.$init=function(){pas.Classes.TComponent.$init.call(this),this.FURL="",this.FOnResponse=null,this.FOnAbort=null,this.FHeaders=null,this.FCommand=0,this.FCustomCommand="",this.FPostData="",this.FOnRequestResponse=null,this.FPassword="",this.FUser="",this.FTimeout=0,this.FOnTimeout=null,this.FOnError=null,this.FResponse=null,this.FErrorProc=null,this.FTimeOutProc=null,this.FResponseType=0,this.FOnProgress=null},this.$final=function(){this.FOnResponse=void 0,this.FOnAbort=void 0,this.FHeaders=void 0,this.FOnRequestResponse=void 0,this.FOnTimeout=void 0,this.FOnError=void 0,this.FResponse=void 0,this.FErrorProc=void 0,this.FTimeOutProc=void 0,this.FOnProgress=void 0,pas.Classes.TComponent.$final.call(this)},this.HandleResponse=function(e){var t="",i=pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$new();return i.req=e.target,t="",this.FResponseType in rtl.createSet(1,0)&&(t=e.target.responseText),null!=this.FOnRequestResponse&&this.FOnRequestResponse(this,pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$clone(i),t),null!=this.FOnResponse&&this.FOnResponse(this,t),null!=this.FResponse&&this.FResponse(t,i.req),!0,!0},this.HandleAbort=function(e){return null!=this.FOnAbort&&this.FOnAbort(this),!0,!0},this.HandleTimeout=function(e){return null!=this.FOnTimeout&&this.FOnTimeout(this),null!=this.FTimeOutProc&&this.FTimeOutProc(e.target),!0,!0},this.HandleError=function(e){var t=!1,i=pas["WEBLib.Controls"].TJSEventRecord.$new(),a=pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$new();if(!0,t=!1,null!=this.FOnError&&(i.event=e,a.req=e.target,this.FOnError(this,pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$clone(a),pas["WEBLib.Controls"].TJSEventRecord.$clone(i),{get:function(){return t},set:function(e){t=e}})),null!=this.FErrorProc&&this.FErrorProc(a.req),!t)throw pas.SysUtils.Exception.$create("Create$1",["HTTP request error @"+this.FURL]);return!0},this.HandleProgress=function(e){var t,i;return!0,t=e.loaded,i=e.total,null!=this.FOnProgress&&this.FOnProgress(this,t,i),!0},this.SetHeaders=function(e){this.FHeaders.Assign(e)},this.Create$1=function(e){return pas.Classes.TComponent.Create$1.apply(this,arguments),this.FHeaders=pas.Classes.TStringList.$create("Create$1"),this.FResponseType=0,this.FCommand=0,this.FTimeout=0,this.FResponse=null,this},this.Destroy=function(){rtl.free(this,"FHeaders"),pas.Classes.TComponent.Destroy.call(this)},this.Loaded=function(){var e=0,t=0,i="",a=!1;pas.Classes.TComponent.Loaded.call(this);for(var n=0,s=this.FHeaders.GetCount()-1;n<=s;n++){e=n,a=!1;for(var o=1,r=(i=this.FHeaders.Get(e)).length;o<=r;o++)t=o,":"!==i.charAt(t-1)||a?"="===i.charAt(t-1)&&a&&(i=rtl.setCharAt(i,t-1,":")):(i=rtl.setCharAt(i,t-1,"="),a=!0);this.FHeaders.Put(e,i)}},this.GetResponseType=function(e){var t="";t="";return 1===e?t="text":2===e?t="blob":4===e?t="document":3===e?t="json":5===e&&(t="arraybuffer"),t},this.Execute$1=function(e,t){this.Execute$2(e,t,null)},this.Execute$2=function(t,i,a){var n,s=0,o=null,r="",l="";this.FResponse=t,this.FErrorProc=i,this.FTimeOutProc=a,(o=new XMLHttpRequest).addEventListener("load",rtl.createSafeCallback(this,"HandleResponse")),o.addEventListener("abort",rtl.createSafeCallback(this,"HandleAbort")),o.addEventListener("timeout",rtl.createSafeCallback(this,"HandleTimeout")),o.addEventListener("error",rtl.createSafeCallback(this,"HandleError")),o.addEventListener("progress",rtl.createSafeCallback(this,"HandleProgress")),o.responseType=e.THttpRequest.GetResponseType(this.FResponseType),n=e.HTTPCommand(this.FCommand,this.FCustomCommand),0!==this.FTimeout&&(o.timeout=this.FTimeout),""!==this.FUser?(o.open(n,this.FURL,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest")):o.open(n,this.FURL);for(var h=0,c=this.FHeaders.GetCount()-1;h<=c;h++)s=h,this.FHeaders.GetNameValue(s,{get:function(){return r},set:function(e){r=e}},{get:function(){return l},set:function(e){l=e}}),o.setRequestHeader(r,l);""!==this.FUser&&o.setRequestHeader("Authorization","Basic "+window.btoa(this.FUser+":"+this.FPassword)),""!==this.FPostData?o.send(this.FPostData):o.send()};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("Command",0,e.$rtti.THTTPCommand,"FCommand","FCommand"),t.addProperty("CustomCommand",0,rtl.string,"FCustomCommand","FCustomCommand"),t.addProperty("Headers",2,pas.Classes.$rtti.TStringList,"FHeaders","SetHeaders"),t.addProperty("Password",0,rtl.string,"FPassword","FPassword"),t.addProperty("PostData",0,rtl.string,"FPostData","FPostData"),t.addProperty("ResponseType",0,e.$rtti.THTTPRequestResponseType,"FResponseType","FResponseType",{Default:e.THTTPRequestResponseType.rtDefault}),t.addProperty("Timeout",0,rtl.longint,"FTimeout","FTimeout",{Default:0}),t.addProperty("URL",0,rtl.string,"FURL","FURL"),t.addProperty("User",0,rtl.string,"FUser","FUser"),t.addProperty("OnError",0,pas["WEBLib.Controls"].$rtti.THTTPErrorEvent,"FOnError","FOnError"),t.addProperty("OnAbort",0,pas["WEBLib.Controls"].$rtti.THTTPAbortEvent,"FOnAbort","FOnAbort"),t.addProperty("OnProgress",0,e.$rtti.THTTPProgressEvent,"FOnProgress","FOnProgress"),t.addProperty("OnRequestResponse",0,pas["WEBLib.Controls"].$rtti.THTTPRequestResponseEvent,"FOnRequestResponse","FOnRequestResponse"),t.addProperty("OnResponse",0,pas["WEBLib.Controls"].$rtti.THTTPResponseEvent,"FOnResponse","FOnResponse"),t.addProperty("OnTimeout",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnTimeout","FOnTimeout")})),rtl.createClass(this,"TWebHTTPRequest",this.THttpRequest,(function(){})),this.$rtti.$MethodVar("THttpResponse",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["AResponse",rtl.string]]),methodkind:0}),rtl.createClass(this,"TPersistTokens",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FKey="",this.FEnabled=!1},this.Create$1=function(){return this.FEnabled=!1,this.FKey="",this},this.Assign=function(t){e.TPersistTokens.isPrototypeOf(t)&&(this.FKey=rtl.as(t,e.TPersistTokens).FKey,this.FEnabled=rtl.as(t,e.TPersistTokens).FEnabled)};var t=this.$rtti;t.addMethod("Create$1",2,[]),t.addProperty("Key",0,rtl.string,"FKey","FKey"),t.addProperty("Enabled",0,rtl.boolean,"FEnabled","FEnabled",{Default:!1})})),rtl.createClass(this,"TRESTApp",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FKey="",this.FCallbackURL="",this.FSecret="",this.FAuthURL="",this.FClientID=""},this.Assign=function(t){e.TRESTApp.isPrototypeOf(t)&&(this.FKey=rtl.as(t,e.TRESTApp).FKey,this.FClientID=rtl.as(t,e.TRESTApp).FClientID,this.FCallbackURL=rtl.as(t,e.TRESTApp).FCallbackURL,this.FSecret=rtl.as(t,e.TRESTApp).FSecret,this.FAuthURL=rtl.as(t,e.TRESTApp).FAuthURL)};var t=this.$rtti;t.addProperty("AuthURL",0,rtl.string,"FAuthURL","FAuthURL"),t.addProperty("ClientID",0,rtl.string,"FClientID","FClientID"),t.addProperty("Key",0,rtl.string,"FKey","FKey"),t.addProperty("CallbackURL",0,rtl.string,"FCallbackURL","FCallbackURL"),t.addProperty("Secret",0,rtl.string,"FSecret","FSecret")})),this.TAuthLocale={0:"lcDefault",lcDefault:0,1:"lcEnglish",lcEnglish:1,2:"lcDutch",lcDutch:2,3:"lcGerman",lcGerman:3,4:"lcFrench",lcFrench:4,5:"lcSpanish",lcSpanish:5,6:"lcItalian",lcItalian:6,7:"lcPortuguese",lcPortuguese:7,8:"lcGreek",lcGreek:8,9:"lcDanish",lcDanish:9,10:"lcRussian",lcRussian:10,11:"lcRomanian",lcRomanian:11,12:"lcSwedish",lcSwedish:12,13:"lcFinnish",lcFinnish:13,14:"lcTurkish",lcTurkish:14,15:"lcJapanese",lcJapanese:15},rtl.createClass(this,"TRESTClient",pas.Classes.TComponent,(function(){this.$init=function(){pas.Classes.TComponent.$init.call(this),this.FAccessToken="",this.FRefreshToken="",this.FAccessExpiry=0,this.FRefreshExpiry=0,this.FOnAccessToken=null,this.FEventRegistered=!1,this.FOnResponse=null,this.FPersistTokens=null,this.FApp=null,this.FScopes=null,this.FLocale=0,this.FOnRequestResponse=null,this.FOnError=null,this.FResponseType=0,this.FLoginWidth=0,this.FLoginHeight=0,this.FHandleAccessTokenPtr=null},this.$final=function(){this.FOnAccessToken=void 0,this.FOnResponse=void 0,this.FPersistTokens=void 0,this.FApp=void 0,this.FScopes=void 0,this.FOnRequestResponse=void 0,this.FOnError=void 0,pas.Classes.TComponent.$final.call(this)},this.SetPersistTokens=function(e){this.FPersistTokens.Assign(e)},this.SetApp=function(e){this.FApp.Assign(e)},this.SetScopes=function(e){this.FScopes.Assign(e)},this.InstallCallback=function(){var e=document.createElement("script");e.innerHTML=' function processAuthData(access_token) {var event = new CustomEvent("oauthcallback", {\r detail: {\r message: access_token\r },\r bubbles: true,\r cancelable: true});\r document.dispatchEvent(event);}',document.head.appendChild(e);var t=document.createElement("script");return t.async=!0,t.defer=!0,t.type="text/javascript",document.body.appendChild(t),!0,!0},this.RemoveOAuthHandler=function(){document.removeEventListener("oauthcallback",this.FHandleAccessTokenPtr),this.FEventRegistered=!1},this.HandleAccessToken=function(e){var t;return this.RemoveOAuthHandler(),t=e.detail.message,this.FAccessToken=t,this.WriteTokens(),null!=this.FOnAccessToken&&this.FOnAccessToken(this),!0,!0},this.Create$1=function(t){return pas.Classes.TComponent.Create$1.apply(this,arguments),this.FPersistTokens=e.TPersistTokens.$create("Create$1"),this.FApp=e.TRESTApp.$create("Create"),this.FScopes=pas.Classes.TStringList.$create("Create$1"),this.FLocale=0,this.FResponseType=0,this.FLoginWidth=800,this.FLoginHeight=600,this.FHandleAccessTokenPtr=rtl.createCallback(this,"HandleAccessToken"),this},this.Destroy=function(){rtl.free(this,"FApp"),rtl.free(this,"FScopes"),rtl.free(this,"FPersistTokens"),pas.Classes.TComponent.Destroy.call(this)},this.WriteTokens=function(){var e=null;this.FPersistTokens.FEnabled&&""!==this.FPersistTokens.FKey&&((e=pas["WEBLib.Storage"].TLocalStorage.$create("Create")).SetValues(this.FPersistTokens.FKey,this.FAccessToken),e.SetValues(this.FPersistTokens.FKey+"refresh",this.FRefreshToken),e.SetValues(this.FPersistTokens.FKey+"accessexpiry",pas["WEBLib.Utils"].TDateTimeHelper.ToIsoString.call({p:this,get:function(){return this.p.FAccessExpiry},set:function(e){this.p.FAccessExpiry=e}},!0,!1)),e.SetValues(this.FPersistTokens.FKey+"refreshexpiry",pas["WEBLib.Utils"].TDateTimeHelper.ToIsoString.call({p:this,get:function(){return this.p.FRefreshExpiry},set:function(e){this.p.FRefreshExpiry=e}},!0,!1)),e=rtl.freeLoc(e))};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("App",2,e.$rtti.TRESTApp,"FApp","SetApp"),t.addProperty("LoginHeight",0,rtl.longint,"FLoginHeight","FLoginHeight",{Default:600}),t.addProperty("LoginWidth",0,rtl.longint,"FLoginWidth","FLoginWidth",{Default:800}),t.addProperty("PersistTokens",2,e.$rtti.TPersistTokens,"FPersistTokens","SetPersistTokens"),t.addProperty("ResponseType",0,e.$rtti.THTTPRequestResponseType,"FResponseType","FResponseType",{Default:e.THTTPRequestResponseType.rtDefault}),t.addProperty("Scopes",2,pas.Classes.$rtti.TStrings,"FScopes","SetScopes"),t.addProperty("OnAccessToken",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnAccessToken","FOnAccessToken"),t.addProperty("OnRequestResponse",0,pas["WEBLib.Controls"].$rtti.THTTPRequestResponseEvent,"FOnRequestResponse","FOnRequestResponse"),t.addProperty("OnResponse",0,e.$rtti.THttpResponse,"FOnResponse","FOnResponse"),t.addProperty("OnError",0,pas["WEBLib.Controls"].$rtti.THTTPErrorEvent,"FOnError","FOnError")})),this.HTTPCommand=function(e,t){var i="";return 0===e?i="GET":1===e?i="POST":2===e?i="PUT":3===e?i="DELETE":4===e?i="HEAD":5===e?i="PATCH":6===e&&(i=t),i},e.$init=function(){e.TRESTClient.InstallCallback()}}),["WEBLib.Storage","WEBLib.Utils"]),rtl.module("WEBLib.Utils",["System","Types","Web","SysUtils","Math","Classes","JS"],(function(){"use strict";rtl.createHelper(this,"TDateTimeHelper",null,(function(){this.ToIsoString=function(e,t){var i=0,a=0,n=0,s=0,o=0,r=0,l=0,h="",c="",d="";function m(e,t){var i="";for(i=pas.SysUtils.IntToStr(e);i.length=0?this.GetElementStyle().setProperty("width",pas.SysUtils.IntToStr(e)+"px"):this.GetElementStyle().removeProperty("width")))},this.SetHeight=function(e){var t=null;this.FHeight!==e&&(this.FAlign in rtl.createSet(3,4,5)&&null!=this.GetElementHandle()&&(t=this.GetElementHandle().getBoundingClientRect()).top+e>=pas["WEBLib.Forms"].WinHeight()&&(e=Math.round(pas["WEBLib.Forms"].WinHeight()-t.top)),this.FHeight=e,this.ResetAnchoring(),this.DoBoundsChange(),!this.GetIsLinked()||1!==this.FHeightStyle||0 in this.FComponentState||this.IsUpdating()||null==this.GetElementHandle()||(e>=0?this.GetElementStyle().setProperty("height",pas.SysUtils.IntToStr(e)+"px"):this.GetElementStyle().removeProperty("height")))},this.SetWidthInt=function(e){this.FWidth=e},this.SetHeightInt=function(e){this.FHeight=e},this.SetEnabled=function(e){this.FEnabled!==e&&(this.FEnabled=e,this.UpdateElementData())},this.RecreateCanvas=function(){},this.VisibleChanging=function(){},this.VisibleChanged=function(){for(var e=0,t=0,i=this.GetControlsCount()-1;t<=i;t++)e=t,this.GetControls(e).VisibleChanged()},this.ColorChanging=function(){},this.GetWidth=function(){var e=0,t=null;return e=this.FWidth,null==this.GetElementHandle()||0 in this.FComponentState||(-1===e&&(e=Math.round(pas.System.Int(this.GetElementHandle().offsetWidth))),1!==this.FWidthStyle&&(t=this.GetElementHandle().getBoundingClientRect(),e=Math.round(pas.System.Int(t.right-t.left)))),e},this.GetHeight=function(){var e=0,t=null;return e=this.FHeight,null==this.GetElementHandle()||0 in this.FComponentState||(-1===e&&(e=Math.round(pas.System.Int(this.GetElementHandle().offsetHeight))),1!==this.FHeightStyle&&(t=this.GetElementHandle().getBoundingClientRect(),e=Math.round(pas.System.Int(t.bottom-t.top)))),e},this.GetOuterWidth=function(){return this.FWidth-this.FBorderWidth},this.GetOuterHeight=function(){return this.FHeight-this.FBorderWidth},this.GetDesignWidth=function(){return this.FWidth},this.GetDesignHeight=function(){return this.FHeight},this.GetDesignLeft=function(){return this.FLeft},this.GetDesignTop=function(){return this.FTop},this.GetLeft=function(){var e=0;return-1!==(e=this.FLeft)||null==this.GetElementHandle()||0 in this.FComponentState||(e=Math.round(this.GetElementHandle().offsetLeft)),e},this.GetTop=function(){var e=0;return-1!==(e=this.FTop)||null==this.GetElementHandle()||0 in this.FComponentState||(e=Math.round(this.GetElementHandle().offsetTop)),e},this.CreateElement=function(){return null,null},this.CreateChildElements=function(e){},this.ContainerElement=function(){return document.body},this.IsStructuralElement=function(){return!1,!1},this.IsEnabled=function(){return this.FEnabled},this.GetNewName=function(){var t,i="",a="";return i=this.$classname,pas.System.Delete({get:function(){return i},set:function(e){i=e}},1,1),a="",null!=(t=pas["WEBLib.Forms"].GetParentForm(this))&&(a=t.$classname),a+"_"+e.FindUniqueName(i)},this.IsInputControl=function(){return!1,!1},this.UseCSSFont=function(){return!(""===this.FElementClassName&&0===this.FElementFont&&!this.GetIsLinked())},this.UseCSSFontColor=function(){return!(pas["WEBLib.Forms"].Application.FThemed&&pas["WEBLib.Graphics"].ColorToRGB(this.FFont.FColor)===pas["WEBLib.Graphics"].RGB(0,0,0))},this.RecreateElement=function(){null!=this.GetContainer()&&(this.UnbindEvents(),this.GetContainer().parentNode.removeChild(this.GetContainer()),this.FElement=null,this.CreateControl(),null!=this.FParent&&null!=this.FParent.GetContainer()&&this.FParent.GetChildContainer().appendChild(this.GetContainer()))},this.BindElement=function(){},this.CreateInitialize=function(){this.FRequiredScripts=pas.Classes.TStringList.$create("Create$1"),this.FOrigRect.$assign(pas.Types.Rect(-1,-1,-1,-1)),this.FClipChildren=!0},this.DestroyControls=function(){for(var e=0,t=null,i=this.GetControlsCount()-1;i>=0;i--)e=i,t=this.GetControls(e),t=rtl.freeLoc(t)},this.ClearControls=function(){this.FControls=rtl.arraySetLength(this.FControls,null,0)},this.GetElementStyle=function(){return this.GetElementHandle().style},this.SetControlCursor=function(e){this.FCursor=e,""===this.FElementClassName&&null!=this.GetElementHandle()&&this.SetElementPointer(this.GetElementHandle(),e)},this.SetBiDiMode=function(e){null!=this.GetElementHandle()&&(0===e?this.GetElementHandle().removeAttribute("dir"):this.GetElementHandle().setAttribute("dir","rtl"))},this.GetMouseEventButton=function(e){var t=0;t=0;var i=e.button;return 0===i?t=0:1===i?t=2:2===i&&(t=1),t},this.GetMouseEventShiftState=function(e){var t={};return t={},e.shiftKey&&(t=rtl.unionSet(t,rtl.createSet(0))),e.ctrlKey&&(t=rtl.unionSet(t,rtl.createSet(2))),e.altKey&&(t=rtl.unionSet(t,rtl.createSet(1))),1==(1&e.buttons)&&(t=rtl.unionSet(t,rtl.createSet(3))),2==(2&e.buttons)&&(t=rtl.unionSet(t,rtl.createSet(4))),4==(4&e.buttons)&&(t=rtl.unionSet(t,rtl.createSet(5))),t},this.GetKeyBoardEventShiftState=function(e){var t={};return t={},e.shiftKey&&(t=rtl.unionSet(t,rtl.createSet(0))),e.ctrlKey&&(t=rtl.unionSet(t,rtl.createSet(2))),e.altKey&&(t=rtl.unionSet(t,rtl.createSet(1))),t},this.GetMouseWheelEventShiftState=function(e){var t={};return t={},e.shiftKey&&(t=rtl.unionSet(t,rtl.createSet(0))),e.ctrlKey&&(t=rtl.unionSet(t,rtl.createSet(2))),e.altKey&&(t=rtl.unionSet(t,rtl.createSet(1))),t},this.GetTouchEventShiftState=function(e){var t={};return t={},e.shiftKey&&(t=rtl.unionSet(t,rtl.createSet(0))),e.ctrlKey&&(t=rtl.unionSet(t,rtl.createSet(2))),e.altKey&&(t=rtl.unionSet(t,rtl.createSet(1))),t},this.HandleDoClick=function(e){return this.FElementEvent=e,0 in this.FEventStopPropagation&&this.StopPropagation(),this.FEnabled&&this.Click(),!0,this.FElementEvent=null,!0},this.HandleDoWheel=function(e){var t,i=!1,a=0,n=0;return this.FElementEvent=e,this.StopPropagation(),this.XYToClient(e.clientX,e.clientY,{get:function(){return a},set:function(e){a=e}},{get:function(){return n},set:function(e){n=e}}),this.FWheelMousePos.x=Math.round(a),this.FWheelMousePos.y=Math.round(n),t=rtl.refSet(this.GetMouseWheelEventShiftState(e)),i=!1,this.MouseWheel(rtl.refSet(t),pas.System.Trunc(-e.deltaY),{get:function(){return i},set:function(e){i=e}}),!0,this.FElementEvent=null,!0},this.HandleDoDblClick=function(e){return this.FElementEvent=e,4 in this.FEventStopPropagation&&this.StopPropagation(),this.FEnabled&&this.DblClick(),!0,this.FElementEvent=null,!0},this.HandleDoMouseDown=function(i){var a,n,s=!1,o=0,r=0;return this.FElementEvent=i,1 in this.FEventStopPropagation&&this.StopPropagation(),this.CanFocus()||this.PreventDefault(),t.FMouseX=Math.round(i.clientX),t.FMouseY=Math.round(i.clientY),this.XYToClient(i.clientX,i.clientY,{get:function(){return o},set:function(e){o=e}},{get:function(){return r},set:function(e){r=e}}),this.HasVertScrollBar()&&o>this.GetWidth()-e.GetScrollBarWidth()||this.HasHorzScrollBar()&&r>this.GetHeight()-e.GetScrollBarHeight()||(a=rtl.refSet(this.GetMouseEventShiftState(i)),n=this.GetMouseEventButton(i),this.MouseDown(n,rtl.refSet(a),pas.System.Trunc(o),pas.System.Trunc(r)),s=!0,this.FElementEvent=null),s},this.HandleDoMouseUp=function(t){var i,a,n=!1,s=0,o=0;return this.FElementEvent=t,2 in this.FEventStopPropagation&&this.StopPropagation(),this.XYToClient(t.clientX,t.clientY,{get:function(){return s},set:function(e){s=e}},{get:function(){return o},set:function(e){o=e}}),this.HasVertScrollBar()&&s>this.GetWidth()-e.GetScrollBarWidth()||this.HasHorzScrollBar()&&o>this.GetHeight()-e.GetScrollBarHeight()?(this.FElementEvent=null,n):(i=rtl.refSet(this.GetMouseEventShiftState(t)),a=this.GetMouseEventButton(t),0===this.FDragMode&&this.DisableDrag(),this.MouseUp(a,rtl.refSet(i),pas.System.Trunc(s),pas.System.Trunc(o)),n=!0,this.FElementEvent=null,n)},this.HandleDoMouseMove=function(e){var i,a=0,n=0;return this.FElementEvent=e,t.FCursorX=Math.round(e.clientX),t.FCursorY=Math.round(e.clientY),3 in this.FEventStopPropagation&&this.StopPropagation(),this.XYToClient(e.clientX,e.clientY,{get:function(){return a},set:function(e){a=e}},{get:function(){return n},set:function(e){n=e}}),i=rtl.refSet(this.GetMouseEventShiftState(e)),this.MouseMove(rtl.refSet(i),pas.System.Trunc(a),pas.System.Trunc(n)),!0,this.FElementEvent=null,!0},this.HandleDoMouseLeave=function(e){var t=!1;return this.Captured()?t:(e.stopPropagation(),this.DoMouseLeave(),t=!0)},this.HandleDoContextMenu=function(e){return!0,!0},this.LayerHandleDoMouseEnter=function(e){return 0===e.buttons&&this.Captured()&&!this.FMouseInsideLayer&&(this.ReleaseCapture(),this.HandleDoMouseUp(e),this.HandleDoMouseLeave(e)),this.FMouseInsideLayer=!0,!0,!0},this.LayerHandleDoMouseLeave=function(e){return this.FMouseInsideLayer=!1,!0,!0},this.HandleDoMouseEnter=function(e){var t=!1;return this.Captured()?t:(e.stopPropagation(),this.DoMouseEnter(),t=!0)},this.HandleDoKeyDown=function(e){var t=0,i={};return this.FElementEvent=e,6 in this.FEventStopPropagation&&this.StopPropagation(),null==e.key||(t=this.GetKeyCode(e.key,!0),i=rtl.refSet(this.GetKeyBoardEventShiftState(e)),this.KeyDown({get:function(){return t},set:function(e){t=e}},rtl.refSet(i)),t in rtl.createSet(13,27,9)&&this.KeyPreview({get:function(){return t},set:function(e){t=e}},rtl.refSet(i))),!0,0===t&&this.PreventDefault(),this.FElementEvent=null,!0},this.HandleDoKeyUp=function(e){var t=0,i={},a="";return this.FElementEvent=e,7 in this.FEventStopPropagation&&this.StopPropagation(),null==e.key||(t=this.GetKeyCode(e.key,!0),i=rtl.refSet(this.GetKeyBoardEventShiftState(e)),27===t&&(a="",this.KeyPress({get:function(){return a},set:function(e){a=e}})),this.KeyUp({get:function(){return t},set:function(e){t=e}},rtl.refSet(i))),!0,0===t&&this.PreventDefault(),this.FElementEvent=null,!0},this.HandleDoKeyPress=function(e){var t="";return this.FElementEvent=e,5 in this.FEventStopPropagation&&this.StopPropagation(),this.IsKeyCharacter(e.key)&&(t=this.GetKeyChar(e.key),this.KeyPress({get:function(){return t},set:function(e){t=e}})),!0,"\0"===t&&this.PreventDefault(),this.FElementEvent=null,!0},this.HandleDoInput=function(t){var i=!1,a="",n="";return e.IsAndroid()&&(this.FElementEvent=t,5 in this.FEventStopPropagation&&this.StopPropagation(),a="\0",""!==t.data&&(n=t.data,a=pas.System.Assigned(n)?n.charAt(n.length-1):"\b",this.KeyPress({get:function(){return a},set:function(e){a=e}})),i=!0,"\0"===a&&this.PreventDefault(),this.FElementEvent=null),i},this.HandleDoExit=function(e){return this.DoExit(),!0,!0},this.HandleDoEnter=function(e){return this.FElementEvent=e,this.StopPropagation(),this.DoEnter(),!0,this.FElementEvent=null,this.FGotFocus=!0,!0},this.HandleDoTouchStart=function(e){var t=0,i=0,a=null,n={};return this.FElementEvent=e,this.FLastElementEvent=e,this.StopPropagation(),this.FAllowTouch||this.PreventDefault(),e.touches.length>0&&(a=e.touches.item(0),this.XYToClient(a.clientX,a.clientY,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),n=rtl.refSet(this.GetTouchEventShiftState(e)),this.FLinkTouchEvents&&this.MouseDown(0,rtl.refSet(n),pas.System.Trunc(t),pas.System.Trunc(i)),this.TouchStart(pas.System.Trunc(t),pas.System.Trunc(i))),!0,this.FElementEvent=null,!0},this.HandleDoTouchMove=function(e){var t=0,i=0,a=null,n={};return this.FElementEvent=e,this.FLastElementEvent=e,this.StopPropagation(),this.FAllowTouch||this.PreventDefault(),this.Captured()&&this.PreventDefault(),e.touches.length>0&&(a=e.touches.item(0),this.XYToClient(a.clientX,a.clientY,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),n=rtl.refSet(this.GetTouchEventShiftState(e)),this.FLinkTouchEvents&&this.MouseMove(rtl.refSet(n),pas.System.Trunc(t),pas.System.Trunc(i)),this.TouchMove(pas.System.Trunc(t),pas.System.Trunc(i))),this.FElementEvent=null,!0,!0},this.HandleDoTouchEnd=function(e){var t=0,i=0,a=null,n={};return this.FElementEvent=e,this.FAllowTouch||this.PreventDefault(),this.ReleaseCapture(),this.StopPropagation(),null!=this.FLastElementEvent&&this.FLastElementEvent.touches.length>0&&(a=this.FLastElementEvent.touches.item(0),this.XYToClient(a.clientX,a.clientY,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),n=rtl.refSet(this.GetTouchEventShiftState(e)),this.FLinkTouchEvents&&(this.MouseUp(0,rtl.refSet(n),pas.System.Trunc(t),pas.System.Trunc(i)),this.FEnabled&&!this.FAllowTouch&&this.Click()),this.TouchEnd(pas.System.Trunc(t),pas.System.Trunc(i))),this.FElementEvent=null,!0,!0},this.HandleDoTouchCancel=function(e){var t=0,i=0,a=null,n={};return this.FElementEvent=e,this.ReleaseCapture(),this.StopPropagation(),e.touches.length>0&&(a=e.touches.item(0),this.XYToClient(a.clientX,a.clientY,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),n=rtl.refSet(this.GetTouchEventShiftState(e)),this.FLinkTouchEvents&&this.MouseUp(0,rtl.refSet(n),pas.System.Trunc(t),pas.System.Trunc(i)),this.TouchCancel(pas.System.Trunc(t),pas.System.Trunc(i))),this.FElementEvent=null,!0,!0},this.HandleDoDragStart=function(e){var i=null;return this.FElementEvent=e,e.stopPropagation(),i=null,this.DoStartDrag({get:function(){return i},set:function(e){i=e}}),t.DragObject=null!=i?i:this,!0,!0},this.HandleDoDragOver=function(e){var i;return this.FElementEvent=e,e.stopPropagation(),this.DragOver(t.DragObject,e.clientX,e.clientY,2,{p:this,get:function(){return this.p.FAcceptDrag},set:function(e){this.p.FAcceptDrag=e}}),!this.FAcceptDrag||this.IsInputControl()&&0!==e.dataTransfer.items.length||e.preventDefault(),i=!this.FAcceptDrag,this.FElementEvent=null,i},this.HandleDoDragEnter=function(e){var i;return this.FElementEvent=e,e.stopPropagation(),this.FAcceptDrag=this.IsInputControl(),this.DragOver(t.DragObject,e.clientX,e.clientY,0,{p:this,get:function(){return this.p.FAcceptDrag},set:function(e){this.p.FAcceptDrag=e}}),this.FAcceptDrag&&e.preventDefault(),i=!this.FAcceptDrag,this.FElementEvent=null,i},this.HandledoDragLeave=function(e){return this.FElementEvent=e,e.stopPropagation(),this.DragOver(t.DragObject,e.clientX,e.clientY,1,{p:this,get:function(){return this.p.FAcceptDrag},set:function(e){this.p.FAcceptDrag=e}}),!0,this.FElementEvent=null,!0},this.HandleDoDragEnd=function(e){return this.FElementEvent=e,e.stopPropagation(),this.DoEndDrag(t.DragObject,e.clientX,e.clientY),!0,0===this.FDragMode&&this.DisableDrag(),this.FElementEvent=null,!0},this.HandleDoDragDrop=function(e){var i;return this.FElementEvent=e,e.stopPropagation(),this.FAcceptDrag?(this.IsInputControl()||e.preventDefault(),this.DragDrop(t.DragObject,e.clientX,e.clientY)):e.preventDefault(),i=this.FAcceptDrag,this.FElementEvent=null,i},this.HandleKeyPreview=function(e){},this.HandleFontChanged=function(e){0===this.FUpdateCount&&(this.SetParentFont(!1),this.ParentFontChanged()),this.FontChanged()},this.ParentFontChanged=function(){for(var e=0,t=0,i=this.GetControlsCount()-1;t<=i;t++)e=t,this.GetControls(e).FParentFont&&(this.GetControls(e).FFont.Assign(this.FFont),this.GetControls(e).FontChanged(),this.GetControls(e).FParentFont=!0,this.GetControls(e).ParentFontChanged())},this.DoExit=function(){null!=this.FOnExit&&this.FOnExit(this)},this.DoEnter=function(){null!=this.FOnEnter&&this.FOnEnter(this)},this.Click=function(){null!=this.FOnClick&&this.IsEnabled()&&this.FOnClick(this)},this.UpdateElement=function(){this.FBlockUpdateElement||this.FUpdateCount>0||null==this.GetElementHandle()||this.GetElementHandle()===this.ContainerElement()||this.IsUpdating()||(this.UpdateElementData(),this.GetIsLinked()||this.UpdateElementVisual())},this.UpdateElementSize=function(){var e=null,t=0,i=0,a=0,n=null,s=null;if(!(this.FBlockUpdateElement||this.FUpdateCount>0||this.GetIsLinked()||null==this.GetElementHandle()||this.GetElementHandle()===this.ContainerElement())){for(e=this.GetElementStyle(),t=0,i=0,n=this.FParent;null!=n&&0===this.FElementPosition&&0!==n.FElementPosition&&!pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(n);){if(n.GetIsLinked()&&null!=n.GetElementHandle()&&"absolute"!==n.GetElementHandle().getAttribute("position")){s=n.GetElementHandle().getBoundingClientRect(),t=Math.round(s.left),i=Math.round(s.top);break}n=n.FParent}null!=this.FParent&&this.FParent.IsStructuralElement()&&(t=this.FParent.GetLeft(),i=this.FParent.GetTop()),0===this.FElementPosition?(-1!==this.FTop?e.setProperty("top",pas.SysUtils.IntToStr(this.FTop+i)+"px"):e.setProperty("top",""),-1!==this.FLeft?e.setProperty("left",pas.SysUtils.IntToStr(this.FLeft+t)+"px"):e.setProperty("left","")):(e.removeProperty("top"),e.removeProperty("left")),1===this.FWidthStyle&&(a=this.GetOuterWidth(),-1!==this.FWidth?e.setProperty("width",pas.SysUtils.IntToStr(a)+"px"):e.removeProperty("width")),2===this.FWidthStyle&&e.removeProperty("width"),1===this.FHeightStyle&&(-1!==this.FHeight?e.setProperty("height",pas.SysUtils.IntToStr(this.GetOuterHeight())+"px"):e.removeProperty("height")),2===this.FHeightStyle&&e.removeProperty("height"),0===this.FWidthStyle&&(-1!==this.FWidth?e.setProperty("width",pas["WEBLib.Utils"].FormatProp("%.2f%%",pas.System.VarRecs(3,this.FWidthPercent))):e.removeProperty("width")),0===this.FHeightStyle&&(-1!==this.FHeight?e.setProperty("height",pas["WEBLib.Utils"].FormatProp("%.2f%%",pas.System.VarRecs(3,this.FHeightPercent))):e.removeProperty("height")),0===this.FElementPosition?e.setProperty("position","absolute"):1===this.FElementPosition?e.setProperty("position","relative"):e.removeProperty("position"),e.setProperty("box-sizing","border-box")}},this.UpdateElementVisual=function(){var t,i,a=null;if(null!=(t=this.GetElementHandle())&&!this.IsUpdating()){a=this.GetElementStyle(),this.FParentFont&&null!=this.FParent&&(this.FFont.FOnChange=null,this.FFont.Assign(this.FParent.FFont),this.FFont.FOnChange=rtl.createCallback(this,"HandleFontChanged")),""===this.FElementClassName&&(this.GetIsLinked()||(this.FClipChildren&&pas.SysUtils.LowerCase(t.tagName)!==pas["WEBLib.WebTools"].cBodyTag?a.setProperty("overflow","hidden"):a.setProperty("overflow","")),this.SetElementPointer(t,this.FCursor)),this.Captured()&&this.FLayer.style.setProperty("cursor",a.getPropertyValue("cursor")),""!==this.FElementClassName||this.CanShowFocus()?a.setProperty("outline",""):a.setProperty("outline","none"),this.UpdateElementSize();var n=this.FTextDirection;0===n?a.removeProperty("direction"):2===n?a.setProperty("direction","rtl"):1===n?a.setProperty("direction","ltr"):3===n&&a.setProperty("direction","inherit"),""===this.FElementClassName&&this.FNoUserSelect&&(a.setProperty("webkit-user-select","none"),a.setProperty("moz-user-select","none"),a.setProperty("khtml-user-select","none"),a.setProperty("ms-user-select","none"),a.setProperty("user-select","none"),a.setProperty("-webkit-tap-highlight-color","transparent")),this.SetElementColor(t,this.FColor),i=this.UseCSSFont(),e.SetHTMLElementFont(t,this.FFont,i),i?a.removeProperty("color"):this.IsEnabled()&&this.UseCSSFontColor()&&a.setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(this.FFont.FColor))}},this.UpdateElementData=function(){var e=null,t=null,i="",a="",n="",s=0,o=0;if(null!=this.GetElementHandle()){if(4 in this.FComponentState||(this.FVisible?this.GetElementStyle().setProperty("display",""):this.GetElementStyle().setProperty("display","none")),this.EnableTab(),this.IsEnabled()?this.FContainer.removeAttribute("disabled"):this.FContainer.setAttribute("disabled",""),this.GetIsLinked()&&""===this.FHint)return;if(""!==this.GetRole()&&this.FContainer.setAttribute("role",this.FRole),null!=(e=pas["WEBLib.Forms"].GetParentForm(this))&&1===e.FCSSLibrary&&this.FShowHint&&""!==this.FHint){t=this.GetElementHandle(),i=this.FHint;var r=pas["WEBLib.Forms"].Application.FHintPosition;0===r?n="left":2===r?n="right":1===r?n="top":3===r&&(n="bottom"),a=pas["WEBLib.Forms"].Application.FHintClassName,s=pas["WEBLib.Forms"].Application.FHintPause,o=pas["WEBLib.Forms"].Application.FHintHidePause,this.FTooltip=new bootstrap.Tooltip(t,{title:i,placement:n,customClass:a,delay:{show:s,hide:o}})}else this.FShowHint&&""!==this.FHint?this.FContainer.setAttribute("title",this.FHint):this.FContainer.removeAttribute("title");this.IsEnabled()&&1!==this.FElementFont?1!==this.FElementFont&&this.UseCSSFontColor()&&this.GetElementStyle().setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(this.FFont.FColor)):this.GetElementStyle().removeProperty("color")}},this.UpdateParent=function(){this.InternalUpdateParent(),this.UpdateChildren(this.FPrevParent),this.UpdateChildren(this.FParent)},this.UpdateControlSize=function(e,t){this.FWidth=e,this.FHeight=t},this.InternalUpdateParent=function(){var e=null;e=this.FPrevParent,this.FNew&&(this.CreateControl(),null!=this.GetContainer()&&(null!=this.FParent&&null==this.FParent.GetContainer()&&this.FParent.CreateControl(),this.FParent!==e&&null!=e&&null!=e.GetContainer()&&this.GetContainer().parentNode===e.GetChildContainer()&&e.GetChildContainer().removeChild(this.GetContainer()),null!=this.FParent&&null!=this.FParent.GetContainer()&&this.FParent.GetChildContainer().appendChild(this.GetContainer())))},this.UpdateChildren=function(t){var i=0,a=null;if(null!=t&&!(3 in this.FComponentState)){0!==t.FAlign&&t.DoRealign(),e.TCustomControl.isPrototypeOf(t)&&(rtl.as(t,e.TCustomControl).RecreateCanvas(),rtl.as(t,e.TCustomControl).Invalidate());for(var n=0,s=t.GetControlsCount()-1;n<=s;n++)i=n,a=t.GetControls(i),this.UpdateChildren(a)}},this.DisableTab=function(){var e=0;this.FTabStop&&this.CanFocus()||null!=this.GetContainer()&&this.GetContainer().setAttribute("tabindex","-1");for(var t=0,i=this.GetControlsCount()-1;t<=i;t++)e=t,this.GetControls(e).DisableTab()},this.EnableTab=function(){var e=0;null==this.FContainer||this.GetIsLinked()||(this.FTabStop&&this.CanFocus()?this.FContainer.setAttribute("tabindex",pas.SysUtils.IntToStr(this.FTabOrder+1)):this.FContainer.setAttribute("tabindex","-1"));for(var t=0,i=this.GetControlsCount()-1;t<=i;t++)e=t,this.GetControls(e).EnableTab()},this.SetElementClassName=function(e){this.FElementClassName!==e&&(this.FElementClassName=e,null!=this.FContainer&&this.FContainer.setAttribute("class",e),this.UpdateElement())},this.SetColor=function(e){this.FColor=e,this.UpdateElementVisual(),this.ColorChanging()},this.SetFont=function(e){this.FFont.SetName(e.FName),this.FFont.SetSize(e.FSize),this.FFont.SetStyle(rtl.refSet(e.FStyle)),this.FFont.SetColor(e.FColor)},this.SetParent=function(e){var t;null!=e&&(e=e.CanAcceptChild(this)),t=this.FNew,this.FParent!==e&&(null!=this.FParent&&this.FParent.UnRegisterParent(this),this.FPrevParent=this.FParent,this.FParent=e,this.FGotFocus=!1,this.UpdateParent(),3 in this.FComponentState||(t||this.UpdateElement(),this.InitScript()),null!=this.FParent&&this.FParent.RegisterParent(this),0 in this.FComponentState&&null!=this.FParent&&!(0 in this.FParent.FComponentState)&&this.Loaded(),null==e||null==this.FParent||this.FParent.IsUpdating()||this.Realign(),3 in this.FComponentState||this.Invalidate())},this.RegisterParent=function(e){this.FControls=rtl.arraySetLength(this.FControls,null,rtl.length(this.FControls)+1),this.FControls[rtl.length(this.FControls)-1]=e},this.UnRegisterParent=function(e){var t=0,i=!1;i=!1;for(var a=0,n=rtl.length(this.FControls)-1;a<=n;a++)t=a,this.FControls[t]===e&&(i=!0),i&&t=120;)a=this.FWheelAccumulator<0,this.FWheelAccumulator=Math.abs(this.FWheelAccumulator)-120,a?(0!==this.FWheelAccumulator&&(this.FWheelAccumulator=-this.FWheelAccumulator),this.DoMouseWheelDown(rtl.refSet(e),pas.Types.TPoint.$clone(this.FWheelMousePos))):this.DoMouseWheelUp(rtl.refSet(e),pas.Types.TPoint.$clone(this.FWheelMousePos))},this.DoMouseWheelDown=function(e,t){var i=!1;return i=!1,null!=this.FOnMouseWheelDown&&this.FOnMouseWheelDown(this,rtl.refSet(e),pas.Types.TPoint.$clone(t),{get:function(){return i},set:function(e){i=e}}),i},this.DoMouseWheelUp=function(e,t){var i=!1;return i=!1,null!=this.FOnMouseWheelUp&&this.FOnMouseWheelUp(this,rtl.refSet(e),pas.Types.TPoint.$clone(t),{get:function(){return i},set:function(e){i=e}}),i},this.DblClick=function(){null!=this.FOnDblClick&&this.FOnDblClick(this)},this.KeyDown=function(e,t){null!=this.FOnKeyDown&&this.FOnKeyDown(this,e,rtl.refSet(t))},this.KeyPreview=function(t,i){null!=this.FOwner&&e.TControl.isPrototypeOf(this.FOwner)&&rtl.as(this.FOwner,e.TControl).KeyPreview(t,rtl.refSet(i))},this.KeyPress=function(e){null!=this.FOnKeyPress&&this.FOnKeyPress(this,e)},this.KeyUp=function(e,t){null!=this.FOnKeyUp&&this.FOnKeyUp(this,e,rtl.refSet(t))},this.SetFocus=function(){var e=null;this.CanFocus()&&null!=this.GetElementHandle()&&(e=this.GetElementHandle(),this.FGotFocus?e.focus():setTimeout((function(){e.focus()}),1))},this.DoMarginsChanged=function(e){this.DoRealign()},this.DoCenterChanged=function(e){this.DoRealign()},this.DoRealign=function(){null==this.FParent||this.FParent.IsUpdating()||this.FParent.AlignControl(this.FParent)},this.DoBoundsChange=function(){var e,t=!1;this.UpdateElementSize(),this.RecreateCanvas(),this.FIsResizing||(this.FIsResizing=!0,this.InternalResize(),this.DoRealign(),t=!1,null!=(e=pas["WEBLib.Forms"].GetParentForm(this))&&(t=(t=e.FIsResizing$1)||e.FUpdateCount>0),(t=(t=t||this.FUpdateCount>0)||this.FIsAligning)||this.UpdateChildAnchoring(),this.FIsResizing=!1)},this.DoEndDrag=function(e,t,i){null!=this.FonEndDrag&&this.FonEndDrag(this,e,t,i)},this.DoStartDrag=function(e){null!=this.FOnStartDrag&&this.FOnStartDrag(this,e)},this.DragOver=function(e,t,i,a,n){null!=this.FOnDragOver&&this.FOnDragOver(this,e,t,i,a,n)},this.Focused=function(){return this.FContainer===document.activeElement},this.GetID=function(){return this.FID},this.GetElementHandle=function(){var e=null;return e=null,null!=this.FContainer&&this.FControlCreated&&(e=this.FContainer),e},this.GetElementBindHandle=function(){return this.GetElementHandle()},this.GetKeyCode=function(e,t){var i=0;i=-1;var a=e;return"Up"===a?i=38:"Down"===a?i=40:"Left"===a?i=37:"Right"===a?i=39:"!"===a?i=56:'"'===a||"#"===a?i=51:"$"===a?i=186:"%"===a?i=192:"'"===a?i=52:"("===a?i=53:")"===a?i=219:"*"===a?i=106:"+"===a?i=107:"-"===a?i=109:","===a?i=44:"."===a?i=46:"/"===a?i=111:"\\"===a?i=226:"="===a?i=187:"<"===a||">"===a?i=226:a===pas.Web.TJSKeyNames.BackSpace?i=8:a===pas.Web.TJSKeyNames.Tab?i=9:a===pas.Web.TJSKeyNames.Enter?i=13:a===pas.Web.TJSKeyNames.Shift?i=16:a===pas.Web.TJSKeyNames.Control?i=17:a===pas.Web.TJSKeyNames.Alt?i=18:a===pas.Web.TJSKeyNames.Pause?i=19:a===pas.Web.TJSKeyNames.CapsLock?i=20:a===pas.Web.TJSKeyNames.Escape?i=27:a===pas.Web.TJSKeyNames.PageUp?i=33:a===pas.Web.TJSKeyNames.PageDown?i=34:a===pas.Web.TJSKeyNames._End?i=35:a===pas.Web.TJSKeyNames.Home?i=36:a===pas.Web.TJSKeyNames.ArrowLeft?i=37:a===pas.Web.TJSKeyNames.ArrowUp?i=38:a===pas.Web.TJSKeyNames.ArrowRight?i=39:a===pas.Web.TJSKeyNames.ArrowDown?i=40:a===pas.Web.TJSKeyNames.Insert?i=45:a===pas.Web.TJSKeyNames.Delete?i=46:a===pas.Web.TJSKeyNames.F1?i=112:a===pas.Web.TJSKeyNames.F2?i=113:a===pas.Web.TJSKeyNames.F3?i=114:a===pas.Web.TJSKeyNames.F4?i=115:a===pas.Web.TJSKeyNames.F5?i=116:a===pas.Web.TJSKeyNames.F6?i=117:a===pas.Web.TJSKeyNames.F7?i=118:a===pas.Web.TJSKeyNames.F8?i=119:a===pas.Web.TJSKeyNames.F9?i=120:a===pas.Web.TJSKeyNames.F10?i=121:a===pas.Web.TJSKeyNames.F11?i=122:a===pas.Web.TJSKeyNames.F12?i=123:a===pas.Web.TJSKeyNames.F13?i=124:a===pas.Web.TJSKeyNames.F14?i=125:a===pas.Web.TJSKeyNames.F15?i=126:a===pas.Web.TJSKeyNames.F16?i=127:a===pas.Web.TJSKeyNames.F17?i=128:a===pas.Web.TJSKeyNames.F18?i=129:a===pas.Web.TJSKeyNames.F19?i=130:a===pas.Web.TJSKeyNames.F20?i=131:pas.System.Assigned(e)&&e.length>0&&(i=e.charCodeAt(0),t&&i>=97&&i<=122?i&=223:i>=65&&i<=90?i|=64:i>122&&(i|=128)),i},this.GetKeyChar=function(e){var t="",i=0;i=-1,t="\0";var a=e;return a===pas.Web.TJSKeyNames.BackSpace?i=8:a===pas.Web.TJSKeyNames.Tab?i=9:a===pas.Web.TJSKeyNames.Enter?i=13:a===pas.Web.TJSKeyNames.Shift?i=16:a===pas.Web.TJSKeyNames.Control?i=17:a===pas.Web.TJSKeyNames.Alt?i=18:a===pas.Web.TJSKeyNames.Pause?i=19:a===pas.Web.TJSKeyNames.CapsLock?i=20:a===pas.Web.TJSKeyNames.Escape?i=27:a===pas.Web.TJSKeyNames.PageUp?i=33:a===pas.Web.TJSKeyNames.PageDown?i=34:a===pas.Web.TJSKeyNames._End?i=35:a===pas.Web.TJSKeyNames.Home?i=36:a===pas.Web.TJSKeyNames.ArrowLeft?i=37:a===pas.Web.TJSKeyNames.ArrowUp?i=38:a===pas.Web.TJSKeyNames.ArrowRight?i=39:a===pas.Web.TJSKeyNames.ArrowDown?i=40:a===pas.Web.TJSKeyNames.Insert?i=45:a===pas.Web.TJSKeyNames.Delete?i=46:a===pas.Web.TJSKeyNames.F1?i=112:a===pas.Web.TJSKeyNames.F2?i=113:a===pas.Web.TJSKeyNames.F3?i=114:a===pas.Web.TJSKeyNames.F4?i=115:a===pas.Web.TJSKeyNames.F5?i=116:a===pas.Web.TJSKeyNames.F6?i=117:a===pas.Web.TJSKeyNames.F7?i=118:a===pas.Web.TJSKeyNames.F8?i=119:a===pas.Web.TJSKeyNames.F9?i=120:a===pas.Web.TJSKeyNames.F10?i=121:a===pas.Web.TJSKeyNames.F11?i=122:a===pas.Web.TJSKeyNames.F12?i=123:a===pas.Web.TJSKeyNames.F13?i=124:a===pas.Web.TJSKeyNames.F14?i=125:a===pas.Web.TJSKeyNames.F15?i=126:a===pas.Web.TJSKeyNames.F16?i=127:a===pas.Web.TJSKeyNames.F17?i=128:a===pas.Web.TJSKeyNames.F18?i=129:a===pas.Web.TJSKeyNames.F19?i=130:a===pas.Web.TJSKeyNames.F20?i=131:t=e.charAt(0),-1!==i&&(t=String.fromCharCode(i)),t},this.IsKeyCharacter=function(e){var t=e;return"Up"!==t&&"Down"!==t&&"Left"!==t&&"Right"!==t&&t!==pas.Web.TJSKeyNames.Shift&&t!==pas.Web.TJSKeyNames.Control&&t!==pas.Web.TJSKeyNames.Alt&&t!==pas.Web.TJSKeyNames.Pause&&t!==pas.Web.TJSKeyNames.CapsLock&&t!==pas.Web.TJSKeyNames.PageUp&&t!==pas.Web.TJSKeyNames.PageDown&&t!==pas.Web.TJSKeyNames._End&&t!==pas.Web.TJSKeyNames.Home&&t!==pas.Web.TJSKeyNames.ArrowLeft&&t!==pas.Web.TJSKeyNames.ArrowUp&&t!==pas.Web.TJSKeyNames.ArrowRight&&t!==pas.Web.TJSKeyNames.ArrowDown&&t!==pas.Web.TJSKeyNames.Insert&&t!==pas.Web.TJSKeyNames.Delete&&t!==pas.Web.TJSKeyNames.F1&&t!==pas.Web.TJSKeyNames.F2&&t!==pas.Web.TJSKeyNames.F3&&t!==pas.Web.TJSKeyNames.F4&&t!==pas.Web.TJSKeyNames.F5&&t!==pas.Web.TJSKeyNames.F6&&t!==pas.Web.TJSKeyNames.F7&&t!==pas.Web.TJSKeyNames.F8&&t!==pas.Web.TJSKeyNames.F9&&t!==pas.Web.TJSKeyNames.F10&&t!==pas.Web.TJSKeyNames.F11&&t!==pas.Web.TJSKeyNames.F12&&t!==pas.Web.TJSKeyNames.F13&&t!==pas.Web.TJSKeyNames.F14&&t!==pas.Web.TJSKeyNames.F15&&t!==pas.Web.TJSKeyNames.F16&&t!==pas.Web.TJSKeyNames.F17&&t!==pas.Web.TJSKeyNames.F18&&t!==pas.Web.TJSKeyNames.F19&&t!==pas.Web.TJSKeyNames.F20},this.GetClientRect=function(){var e=pas.Types.TRect.$new(),t="",i=0,a=0;return t=pas.SysUtils.UpperCase(this.GetStyle("border-width")),a=0,(i=pas.System.Pos("PX",t))>0&&(pas.System.Delete({get:function(){return t},set:function(e){t=e}},i,2),pas.System.val$6(t,{get:function(){return a},set:function(e){a=e}},{get:function(){return i},set:function(e){i=e}})),e.$assign(pas.Types.Rect(0,0,this.GetWidth()-2*a,this.GetHeight()-2*a)),e},this.CreateControl=function(){null==this.FElement&&(this.FElement=this.CreateElement(),null!=this.FElement&&(this.FControlCreated=!0,this.FContainer=this.FElement,"body"!==this.GetID()&&this.GetContainer().setAttribute("id",this.GetID()),this.GetContainer().setAttribute("zindex","0"),""!==this.FElementClassName&&this.GetContainer().setAttribute("class",this.FElementClassName),this.CreateChildElements(this.FElement),this.BindEvents(),this.UpdateElement()))},this.ClearMethodPointers=function(){this.FWheelPtr=null,this.FClickPtr=null,this.FDblClickPtr=null,this.FMouseDownPtr=null,this.FMouseUpPtr=null,this.FMouseMovePtr=null,this.FMouseLeavePtr=null,this.FMouseEnterPtr=null,this.FKeyDownPtr=null,this.FKeyUpPtr=null,this.FKeyPressPtr=null,this.FInputPtr=null,this.FEnterPtr=null,this.FExitPtr=null,this.FTouchStartPtr=null,this.FTouchEndPtr=null,this.FTouchMovePtr=null,this.FTouchCancelPtr=null,this.FLayerMouseLeavePtr=null,this.FLayerMouseEnterPtr=null,this.FScriptLoadedPtr=null,this.FContextMenuPtr=null},this.GetMethodPointers=function(){null===this.FWheelPtr&&(this.FWheelPtr=rtl.createCallback(this,"HandleDoWheel"),this.FClickPtr=rtl.createCallback(this,"HandleDoClick"),this.FDblClickPtr=rtl.createCallback(this,"HandleDoDblClick"),this.FMouseDownPtr=rtl.createCallback(this,"HandleDoMouseDown"),this.FMouseUpPtr=rtl.createCallback(this,"HandleDoMouseUp"),this.FMouseMovePtr=rtl.createCallback(this,"HandleDoMouseMove"),this.FMouseLeavePtr=rtl.createCallback(this,"HandleDoMouseLeave"),this.FMouseEnterPtr=rtl.createCallback(this,"HandleDoMouseEnter"),this.FKeyDownPtr=rtl.createCallback(this,"HandleDoKeyDown"),this.FKeyUpPtr=rtl.createCallback(this,"HandleDoKeyUp"),this.FKeyPressPtr=rtl.createCallback(this,"HandleDoKeyPress"),this.FInputPtr=rtl.createCallback(this,"HandleDoInput"),this.FEnterPtr=rtl.createCallback(this,"HandleDoEnter"),this.FExitPtr=rtl.createCallback(this,"HandleDoExit"),this.FTouchStartPtr=rtl.createCallback(this,"HandleDoTouchStart"),this.FTouchEndPtr=rtl.createCallback(this,"HandleDoTouchEnd"),this.FTouchMovePtr=rtl.createCallback(this,"HandleDoTouchMove"),this.FTouchCancelPtr=rtl.createCallback(this,"HandleDoTouchCancel"),this.FLayerMouseLeavePtr=rtl.createCallback(this,"LayerHandleDoMouseLeave"),this.FLayerMouseEnterPtr=rtl.createCallback(this,"LayerHandleDoMouseEnter"),this.FScriptLoadedPtr=rtl.createCallback(this,"RequiredScriptLoaded"),this.FDragStartPtr=rtl.createCallback(this,"HandleDoDragStart"),this.FDragOverPtr=rtl.createCallback(this,"HandleDoDragOver"),this.FDragEnterPtr=rtl.createCallback(this,"HandleDoDragEnter"),this.FDragLeavePtr=rtl.createCallback(this,"HandledoDragLeave"),this.FDragEndPtr=rtl.createCallback(this,"HandleDoDragEnd"),this.FDragDropPtr=rtl.createCallback(this,"HandleDoDragDrop"),this.FContextMenuPtr=rtl.createCallback(this,"HandleDoContextMenu"))},this.BindEvents=function(){var e=null,t=null;null!=this.GetElementBindHandle()&&(this.GetMethodPointers(),this.FEventsBound=!0,e=this.GetElementBindHandle(),t=this.FWheelPtr,e.addEventListener("wheel",t,{passive:!0}),e.addEventListener("click",this.FClickPtr),e.addEventListener("dblclick",this.FDblClickPtr),e.addEventListener("mousedown",this.FMouseDownPtr),e.addEventListener("mouseup",this.FMouseUpPtr),e.addEventListener("mousemove",this.FMouseMovePtr),e.addEventListener("mouseleave",this.FMouseLeavePtr),e.addEventListener("mouseenter",this.FMouseEnterPtr),e.addEventListener("keydown",this.FKeyDownPtr),e.addEventListener("keyup",this.FKeyUpPtr),e.addEventListener("keypress",this.FKeyPressPtr),e.addEventListener("input",this.FInputPtr),e.addEventListener("focus",this.FEnterPtr),e.addEventListener("blur",this.FExitPtr),t=this.FTouchStartPtr,e.addEventListener("touchstart",t,{passive:!0}),t=this.FTouchMovePtr,e.addEventListener("touchmove",t,{passive:!0}),e.addEventListener("touchend",this.FTouchEndPtr),e.addEventListener("touchcancel",this.FTouchCancelPtr),e.addEventListener("contextmenu",this.FContextMenuPtr),e.addEventListener("dragstart",this.FDragStartPtr),e.addEventListener("dragover",this.FDragOverPtr),e.addEventListener("dragenter",this.FDragEnterPtr),e.addEventListener("dragleave",this.FDragLeavePtr),e.addEventListener("dragend",this.FDragEndPtr),e.addEventListener("drop",this.FDragDropPtr))},this.UnbindEvents=function(){var e=null;this.ReleaseCapture(),null!=this.GetElementBindHandle()&&((e=this.GetElementBindHandle()).removeEventListener("wheel",this.FWheelPtr),e.removeEventListener("click",this.FClickPtr),e.removeEventListener("dblclick",this.FDblClickPtr),e.removeEventListener("mousedown",this.FMouseDownPtr),e.removeEventListener("mouseup",this.FMouseUpPtr),e.removeEventListener("mousemove",this.FMouseMovePtr),e.removeEventListener("mouseleave",this.FMouseLeavePtr),e.removeEventListener("mouseenter",this.FMouseEnterPtr),e.removeEventListener("keydown",this.FKeyDownPtr),e.removeEventListener("keyup",this.FKeyUpPtr),e.removeEventListener("keypress",this.FKeyPressPtr),e.removeEventListener("focus",this.FEnterPtr),e.removeEventListener("blur",this.FExitPtr),e.removeEventListener("input",this.FInputPtr),e.removeEventListener("touchstart",this.FTouchStartPtr),e.removeEventListener("touchmove",this.FTouchMovePtr),e.removeEventListener("touchend",this.FTouchEndPtr),e.removeEventListener("touchcancel",this.FTouchEndPtr),e.removeEventListener("contextmenu",this.FContextMenuPtr))},this.UpdatePadding=function(e){},this.AlignControls=function(e,t){var i=this,a=0;function n(e,a){var n=0,s=0,o=0,r=0;e.AnchoringInitialized()||i.InitAnchoring(),e.FUpdateTopLeft=!0,e.FAlignWithMargins?(n=e.FMargins.FLeft,s=e.FMargins.FTop,r=e.FMargins.FBottom,o=e.FMargins.FRight):(n=0,s=0,r=0,o=0);var l=a;1===l?(e.SetBoundsInt(t.Left+n,t.Top+s,t.Right-t.Left-n-o,e.GetHeight()),t.Top=t.Top+e.GetHeight()+s+r):2===l?(e.SetBoundsInt(t.Left+n,t.Bottom-e.GetHeight()-r-1,t.Right-t.Left-n-o-1,e.GetHeight()),t.Bottom=t.Bottom-e.GetHeight()-s-r):3===l?(e.SetBoundsInt(t.Left+n,t.Top+s,e.GetWidth(),t.Bottom-t.Top-s-r),t.Left=t.Left+e.GetWidth()+n+o):4===l?(e.SetBoundsInt(t.Right-e.GetWidth()-o,t.Top+s,e.GetWidth(),t.Bottom-t.Top-r-s),t.Right=t.Right-e.GetWidth()-o-n):5===l?e.SetBoundsInt(t.Left+n,t.Top+s,t.Right-t.Left-n-o,t.Bottom-t.Top-r-s):6===l&&(n=e.GetLeft(),s=e.GetTop(),o=0,r=0,(e.FCenter.FVertical||e.FCenter.FHorizontal)&&(e.FCenter.FHorizontal&&(n=t.Left,o=rtl.trunc((t.Right-t.Left-e.GetWidth())/2)),e.FCenter.FVertical&&(s=t.Top,r=rtl.trunc((t.Bottom-t.Top-e.GetHeight())/2)),e.SetBoundsInt(n+o,s+r,e.GetWidth(),e.GetHeight()))),e.FUpdateTopLeft=!1}function s(e){var t=0,a=0,s=0,o=null;o=pas.Classes.TList.$create("Create$1");for(var r=0,l=i.GetControlsCount()-1;r<=l;r++)if(t=r,(i.GetControls(t).FCenter.FVertical||i.GetControls(t).FCenter.FHorizontal)&&6===e||i.GetControls(t).FAlign===e&&(i.GetControls(t).FVisible||4 in i.FComponentState)){s=o.GetCount();for(var h=o.GetCount()-1;h>=0;h--){a=h;var c=e;1===c?i.GetControls(t).FOrigToprtl.getObject(o.Get(a)).FOrigLeft+rtl.getObject(o.Get(a)).GetWidth()&&(s=a):2===c&&i.GetControls(t).FOrigTop+i.GetControls(t).GetHeight()>rtl.getObject(o.Get(a)).FOrigTop+rtl.getObject(o.Get(a)).GetHeight()&&(s=a)}o.Insert(s,i.GetControls(t))}for(var d=0,m=o.GetCount()-1;d<=m;d++)t=d,n(rtl.getObject(o.Get(t)),e);o=rtl.freeLoc(o)}this.UpdatePadding(t),s(1),s(2),s(3),s(4),s(5),s(6);for(var o=0,r=this.GetControlsCount()-1;o<=r;o++)a=o,this.GetControls(a).AlignControl(this.GetControls(a))},this.AlignControl=function(e){var t,i=pas.Types.TRect.$new(),a=null,n="",s="",o="",r=null,l=null,h=0,c=0;this.FIsAligning||this.IsUpdating()||0 in this.FComponentState||(null==this.FParent||this.FParent.FVisible)&&(null!=(l=pas["WEBLib.Forms"].GetParentForm(this))&&l.IsUpdating()||(h=0,null!=l&&""!==l.FFormContainer&&pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(e)&&null!=(r=document.getElementById(l.FFormContainer))&&(a=r.getBoundingClientRect(),h=Math.round(a.top+1)),this.FIsAligning=!0,null!=e&&(null!=(t=e.GetElementHandle())&&(n=e.GetElementStyle().getPropertyValue("overflow"),s=e.GetElementStyle().getPropertyValue("overflow-x"),o=e.GetElementStyle().getPropertyValue("overflow-y"),this.FClipChildren&&pas.SysUtils.LowerCase(t.tagName)!==pas["WEBLib.WebTools"].cBodyTag?e.GetElementStyle().setProperty("overflow","hidden"):e.GetElementStyle().setProperty("overflow","")),i.$assign(this.GetClientRect()),i.Bottom=i.Bottom-h,this.GetIsLinked()&&(a=this.GetElementHandle().getBoundingClientRect(),i.$assign(pas.Types.Rect(0,0,Math.round(a.right-a.left),Math.round(a.bottom-a.top)))),i.Bottom+h>pas["WEBLib.Forms"].WinHeight()&&1!==this.FHeightStyle&&0!==this.FElementPosition&&!this.GetIsLinked()&&null==pas["WEBLib.Forms"].VSIDE&&(null!=this.FParent&&pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(this.FParent)||pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(this))&&(i.Bottom=pas["WEBLib.Forms"].WinHeight()-h),null!=t&&"BODY"===t.tagName&&(c=0,document.body.scrollHeight>document.body.clientHeight&&!(4 in this.FComponentState)&&(c=16),""!==l.FFormContainer?(i.Bottom=Math.round(Math.min(i.Bottom,pas["WEBLib.Forms"].WinHeight())),i.Right=Math.round(Math.min(i.Right-c,pas["WEBLib.Forms"].WinWidth()))):(i.Bottom=l.GetHeight(),i.Right=l.GetWidth())),pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(e)&&null==pas["WEBLib.Forms"].VSIDE&&(i.Bottom>pas["WEBLib.Forms"].WinHeight()&&(i.Bottom=pas["WEBLib.Forms"].WinHeight()),i.Right>pas["WEBLib.Forms"].WinWidth()&&(i.Right=pas["WEBLib.Forms"].WinWidth())),e.IsStructuralElement()&&i.$assign(this.FParent.GetClientRect()),this.AlignControls(e,i),null!=t&&(e.GetElementStyle().setProperty("overflow",n),e.GetElementStyle().setProperty("overflow-x",s),e.GetElementStyle().setProperty("overflow-y",o)),this.FIsAligning=!1)))},this.InitAnchoring=function(){var e=0,t=0,i=0;function a(t,i,a){var n;i.set(0),a.set(0),null!=(n=pas.TypInfo.GetPropInfo(t.$class.ClassInfo(),"BorderStyle"))&&((e=pas.TypInfo.GetOrdProp$1(t,n))in rtl.createSet(1,4,5)&&(i.set(4),a.set(4)),e in rtl.createSet(2,3)&&(i.set(16),a.set(16)))}if(!this.AnchoringInitialized()){t=0,i=0,pas["WEBLib.Forms"].TForm.isPrototypeOf(this)?(rtl.as(this,pas["WEBLib.Forms"].TForm).IsMiletus()&&a(this,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),this.FOrigRect.$assign(pas.Types.Rect(0,0,this.GetDesignWidth()-t,this.GetDesignHeight()-i))):this.FOrigRect.$assign(pas.Types.Rect(this.GetDesignLeft(),this.GetDesignTop(),this.GetDesignLeft()+this.GetDesignWidth(),this.GetDesignTop()+this.GetDesignHeight())),null!=this.FParent&&(pas["WEBLib.Forms"].TForm.isPrototypeOf(this.FParent)?(rtl.as(this.FParent,pas["WEBLib.Forms"].TForm).IsMiletus()&&a(this.FParent,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),this.FOrigParentRect.$assign(pas.Types.Rect(0,0,this.FParent.GetDesignWidth()-t,this.FParent.GetDesignHeight()-i))):(this.FParent.AnchoringInitialized()||this.FParent.InitAnchoring(),this.FOrigParentRect.$assign(pas.Types.Rect(this.FParent.GetDesignLeft(),this.FParent.GetDesignTop(),this.FParent.GetDesignLeft()+this.FParent.GetDesignWidth(),this.FParent.GetDesignTop()+this.FParent.GetDesignHeight()))));for(var n=0,s=this.GetControlsCount()-1;n<=s;n++)e=n,this.GetControls(e).InitAnchoring()}},this.AnchoringInitialized=function(){return-1!==this.FOrigRect.Left||-1!==this.FOrigRect.Top},this.InitScript=function(){},this.Realign=function(){this.AlignControl(this)},this.Loaded=function(){var e=0;if(0 in this.FComponentState){pas.Classes.TComponent.Loaded.call(this);for(var t=0,i=this.GetControlsCount()-1;t<=i;t++)e=t,this.GetControls(e).FElementPosition in rtl.createSet(1,2)&&!this.GetControls(e).GetIsLinked()&&this.GetControls(e).FChildOrder>=0&&this.GetControls(e).FChildOrder0},this.CanShowFocus=function(){return this.FShowFocus},this.RequiredScriptLoaded=function(e){rtl.asExt(e.target,HTMLScriptElement).title="tmswebloaded",this.FControlScriptCountLoaded+=1},this.GetStyle=function(e){var t,i="",a="";return a="",null==(t=this.GetElementHandle())?i:(window.getComputedStyle&&(a=getComputedStyle(t,"")[e]),t.currentStyle&&(a=t.currentStyle[e]),i=a)},this.SetBoundsInt=function(e,t,i,a){(e!==this.GetLeft()||t!==this.GetTop()||i!==this.GetWidth()&&1===this.FWidthStyle||a!==this.GetHeight()&&1===this.FHeightStyle||null!=this.FParent&&this.FParent.GetIsLinked())&&(this.FBlockUpdateElement=!0,this.FLeft=e,this.FTop=t,this.FWidth=i,this.FHeight=a,this.FBlockUpdateElement=!1,this.UpdateElementSize(),0!==this.FAlign?this.DoRealign():this.Realign(),this.RecreateCanvas(),this.DoBoundsChange(),this.Invalidate(),this.UpdateChildAnchoring())},this.EnableDrag=function(){null!=this.GetContainer()&&this.GetContainer().setAttribute("draggable","true")},this.DisableDrag=function(){null!=this.GetContainer()&&"true"===this.GetContainer().getAttribute("draggable")&&this.GetContainer().setAttribute("draggable","false")},this.Create$2=function(e){return this.FGotFocus=!1,this.FTabStop=!0,this.FAllowTouch=!0,this.CreateWithID(e),this},this.Create$1=function(e){var t,i,a=!1;return this.FGotFocus=!1,this.FEventsBound=!1,this.FTabStop=!0,this.FAllowTouch=!0,this.FNoUserSelect=!0,this.ClearMethodPointers(),pas.Classes.TComponent.Create$1.call(this,e),this.FEventStopPropagation=rtl.createSet(0,4,2,3,1,5,6,7),this.FScriptLoaded=!1,this.FElementFont=0,this.FElementPosition=0,this.FParentElement=null,this.FTextDirection=0,a=!1,null!=(i=pas["WEBLib.Forms"].GetParentForm(this))&&(a=4 in i.FComponentState),t=this.GetNewName(),a?this.CreateWithID(""):this.CreateWithID(t),null==e||4 in e.FComponentState||this.SetName(t),this},this.Destroy=function(){this.UnbindEvents(),this.DestroyControls(),null!=this.GetContainer()&&null!=this.FParent&&null!=this.FParent.GetChildContainer()&&(this.FParent.GetChildContainer()===this.GetContainer().parentNode&&this.FParent.GetChildContainer().removeChild(this.GetContainer()),this.FContainer=null,this.SetParent(null),this.FControlCreated=!1),rtl.free(this,"FRequiredScripts"),rtl.free(this,"FMargins"),rtl.free(this,"FCenter"),rtl.free(this,"FFont"),pas.System.Assigned(this.FToolTip)&&(FToolTip.dispose(),this.FToolTip=null),pas.Classes.TComponent.Destroy.call(this)},this.Assign=function(e){},this.DragDrop=function(e,t,i){null!=this.FOnDragDrop&&this.FOnDragDrop(this,e,t,i)},this.Resize=function(){null!=this.FOnResize&&this.FOnResize(this)},this.ReleaseCapture=function(){var e=null;this.FCaptureDown=!1,this.FCaptured&&null!=this.FLayer&&((e=this.FLayer).removeEventListener("mouseenter",this.FLayerMouseEnterPtr),e.removeEventListener("mouseleave",this.FLayerMouseLeavePtr),e.removeEventListener("mousedown",this.FMouseDownPtr),e.removeEventListener("mouseup",this.FMouseUpPtr),e.removeEventListener("mousemove",this.FMouseMovePtr),e.removeEventListener("touchstart",this.FTouchStartPtr),e.removeEventListener("touchmove",this.FTouchMovePtr),e.removeEventListener("touchend",this.FTouchEndPtr),e.removeEventListener("touchcancel",this.FTouchEndPtr),document.body.removeChild(e),this.FCaptured=!1,this.FLayer=null,this.UpdateElement())},this.PreventDefault=function(){null!=this.GetElementEvent()&&this.GetElementEvent().preventDefault()},this.StopPropagation=function(){null==this.GetElementEvent()||this.FEnablePropagation||this.GetElementEvent().stopPropagation()},this.BeginDrag=function(){this.EnableDrag()},this.BeginUpdate=function(){this.FUpdateCount+=1},this.EndUpdate=function(){this.FUpdateCount>0&&(this.FUpdateCount-=1,0===this.FUpdateCount&&this.UpdateElement())},this.Invalidate=function(){},this.SetParentComponent=function(t){this.FParent!==t&&e.TControl.isPrototypeOf(t)&&this.SetParent(t)},this.XYToClient=function(e,t,i,a){var n=null,s=null,o=null,r=0,l=0,h=!1,c=!1,d=pas.Types.TRect.$new(),m=null,p=0,u=0,g=0,S=0;if(h=!0,c=!1,g=0,S=0,0!==this.FElementPosition)return h=!1,r=e-(s=this.GetElementHandle().getBoundingClientRect()).left,l=t-s.top,i.set(r),void a.set(l);for(g=document.body.scrollLeft+document.documentElement.scrollLeft,S=document.body.scrollTop+document.documentElement.scrollTop,r=e-this.GetLeft(),l=t-this.GetTop(),i.set(r),a.set(l),n=this.FParent,pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(this)&&null==n&&null!=this.GetContainer()&&(s=this.GetContainer().getBoundingClientRect(),i.set(i.get()-s.left),a.set(a.get()-s.top));null!=n;){if(n.GetIsLinked())s=pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(n)?n.GetContainer().getBoundingClientRect():n.GetElementHandle().getBoundingClientRect(),i.set(i.get()-s.left),a.set(a.get()-s.top),i.set(i.get()+n.GetElementHandle().scrollLeft),a.set(a.get()+n.GetElementHandle().scrollTop),g=0,S=0;else if(pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(n))""!==rtl.as(n,pas["WEBLib.Forms"].TCustomForm).FFormContainer&&null!=(o=document.getElementById(rtl.as(n,pas["WEBLib.Forms"].TCustomForm).FFormContainer))&&(c=!0,s=o.getBoundingClientRect(),i.set(i.get()-s.left),a.set(a.get()-s.top)),null!=rtl.as(n,pas["WEBLib.Forms"].TCustomForm).GetContainer()&&""===rtl.as(n,pas["WEBLib.Forms"].TCustomForm).FFormContainer&&rtl.as(n,pas["WEBLib.Forms"].TCustomForm).FPopup&&(s=rtl.as(n,pas["WEBLib.Forms"].TCustomForm).GetContainer().getBoundingClientRect(),i.set(i.get()-s.left),a.set(a.get()-s.top),d.$assign(rtl.as(n,pas["WEBLib.Forms"].TCustomForm).GetClientRect()),a.set(a.get()+d.Top),g=0,S=0);else if(n.FElementPosition in rtl.createSet(1,2)){if(null!=n.GetElementHandle()){s=n.GetElementHandle().getBoundingClientRect(),i.set(r-s.left),a.set(l-s.top),g=0,S=0,h&&(m=window.getComputedStyle(document.documentElement),p=parseInt(m.marginLeft,10),u=parseInt(m.marginTop,10),i.set(i.get()+p),a.set(a.get()+u)),h=!1;break}}else 0===n.FElementPosition&&h&&(i.set(i.get()-n.GetLeft()),a.set(a.get()-n.GetTop()),null!=n.GetElementHandle()&&(i.set(i.get()+n.GetElementHandle().scrollLeft),a.set(a.get()+n.GetElementHandle().scrollTop)),r=i.get(),l=a.get());n=n.FParent}0!==this.FElementPosition||c||(i.set(i.get()+g),a.set(a.get()+S))},this.Captured=function(){return this.FCaptured&&null!=this.FLayer},this.CanFocus=function(){return!0,!0},this.HasHorzScrollBar=function(){var e=!1;return e=!1,null!=this.GetElementHandle()&&(e=this.GetElementHandle().clientWidth0||null!=(t=pas["WEBLib.Forms"].GetParentForm(this))&&t.IsUpdating()||(this.GetPixelRatio()!==this.FPixelRatio&&this.RecreateCanvas(),this.FPixelRatio=this.GetPixelRatio(),this.FPainting=!0,null!=this.FCanvas&&this.FCanvas.Clear(),this.Paint(),this.FPainting=!1))},this.SetFocus=function(){e.TControl.SetFocus.call(this)},this.Focused=function(){return e.TControl.Focused.call(this)},this.EndUpdate=function(){e.TControl.EndUpdate.call(this),0===this.FUpdateCount&&this.Invalidate()}})),rtl.createClass(this,"TCustomHTMLDiv",this.TCustomControl,(function(){this.CreateElement=function(){return document.createElement("DIV")}})),rtl.createClass(this,"TControlManager",pas.Classes.TComponent,(function(){this.$init=function(){pas.Classes.TComponent.$init.call(this),this.FInstanceCount=0},this.Create$1=function(e){return pas.Classes.TComponent.Create$1.apply(this,arguments),this.FInstanceCount=0,this},this.GetInstanceNumber=function(){return this.FInstanceCount+=1,this.FInstanceCount},this.$rtti.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),this.FindUniqueName=function(e){return e+pas.SysUtils.IntToStr(t.ControlManager.GetInstanceNumber())},this.GetScrollBarHeight=function(){var e=0;if(0===(e=t.ScrollBH)){var i=document.createElement("div");i.style.visibility="hidden",i.style.height="100px",i.style.msOverflowStyle="scrollbar",document.body.appendChild(i);var a=i.offsetHeight;i.style.overflow="scroll";var n=document.createElement("div");n.style.height="100%",i.appendChild(n);var s=n.offsetHeight;i.parentNode.removeChild(i),e=a-s,t.ScrollBH=e}return e},this.GetScrollBarWidth=function(){var e=0;if(0===(e=t.ScrollBW)){var i=document.createElement("div");i.style.visibility="hidden",i.style.width="100px",i.style.msOverflowStyle="scrollbar",document.body.appendChild(i);var a=i.offsetWidth;i.style.overflow="scroll";var n=document.createElement("div");n.style.width="100%",i.appendChild(n);var s=n.offsetWidth;i.parentNode.removeChild(i),e=a-s,t.ScrollBW=e}return e},this.SetHTMLElementFont=function(e,t,i){var a="";i?(e.style.removeProperty("font-family"),e.style.removeProperty("font-style"),e.style.removeProperty("font-weight"),e.style.removeProperty("font-size"),e.style.removeProperty("text-decoration")):(e.style.setProperty("font-family",t.FName),e.style.setProperty("font-style","normal"),0 in t.FStyle?e.style.setProperty("font-weight","bold"):e.style.setProperty("font-weight",""),1 in t.FStyle&&e.style.setProperty("font-style","italic"),a="",3 in t.FStyle&&(a="underline"),2 in t.FStyle&&(""!==a&&(a+=" "),a+="line-through"),""!==a?e.style.setProperty("text-decoration",a):e.style.removeProperty("text-decoration"),0!==t.FSize&&e.style.setProperty("font-size",pas.SysUtils.IntToStr(t.FSize)+"pt"))},this.SetHTMLElementColor=function(e,i,a){a||-1===i||16711422===i?e.style.removeProperty(t.cStyleBkgColor):e.style.setProperty(t.cStyleBkgColor,pas["WEBLib.Graphics"].ColorToHTML(i))},this.GetHTMLCursorName=function(e){var t="";t="default";return 0===e?t="default":2===e?t="auto":1===e?t="none":3===e?t="crosshair":4===e?t="text":6===e?t="nesw-resize":7===e?t="ns-resize":8===e?t="nwse-resize":9===e?t="ew-resize":10===e?t="n-resize":11===e?t="wait":12===e?t="copy":13===e?t="no-drop":14===e?t="col-resize":15===e?t="row-resize":16===e?t="copy":17===e?t="progress":18===e?t="not-allowed":19===e?t="progress":20===e?t="help":21===e?t="pointer":22!==e&&5!==e||(t="move"),t},this.GetHTMLElementAbsoluteRect=function(e){var t=pas.Types.TRect.$new(),i="";function a(e){var t=0,i=0;return e=pas.SysUtils.StringReplace(e,"px","",rtl.createSet(0)),pas.System.val$6(e,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),t}return i=e.style.getPropertyValue("left"),t.Left=a(i),i=e.style.getPropertyValue("top"),t.Top=a(i),i=e.style.getPropertyValue("width"),t.Right=t.Left+a(i),i=e.style.getPropertyValue("height"),t.Bottom=t.Top+a(i),t},this.IsAndroid=function(){var e;return e=navigator.userAgent,pas.System.Pos("Android",e)>0},e.$implcode=function(){t.ControlManager=null,t.FMouseX=0,t.FMouseY=0,t.FCursorX=0,t.FCursorY=0,t.ScrollBW=0,t.ScrollBH=0,t.DragObject=null,t.cStyleBkgColor="background-color"},e.$init=function(){t.ScrollBW=0,t.ScrollBH=0,t.DragObject=null,t.ControlManager=e.TControlManager.$create("Create$1",[null])}}),["WEBLib.Dialogs","WEBLib.Forms","Math","TypInfo","WEBLib.WebTools","WEBLib.Utils"]),rtl.module("WEBLib.WebTools",["System","Classes","Web","JS","WEBLib.Controls","WEBLib.Graphics"],(function(){"use strict";var e=this;this.cBodyTag="body",this.cHTMLExt=".html",this.DoubleToHTML=function(e){return pas.SysUtils.Format$1("%g",pas.System.VarRecs(3,e),pas.SysUtils.TFormatSettings.Invariant())},this.GetQueryParam=function(t){var i="";return e.HasQueryParam(t,{get:function(){return i},set:function(e){i=e}}),i},this.HasQueryParam=function(e,t){var i,a=!1;var n="";a=!1;for(var s=window.location.search.substring(1).split("&"),o=0;o"+e.charAt(a+1-1)+"",t.set(e.charAt(a+1-1))):a+1<=i&&"&"===e.charAt(a+1-1)&&(n+="&"),a+=2):(n+=e.charAt(a-1),a+=1);return n},this.HexImageDecode=function(e){var t,i=0,a=0,n=null,s=0,o=0,r=0;t=rtl.trunc(e.length/2),a=0,(s=e.charCodeAt(0)-48)>=10&&(s-=7),(o=e.charCodeAt(1)-48)>=10&&(o-=7),r=1+(o+(s<<4)),(i=pas.System.Pos("4A5045474",e))>1&&i<10&&(r+=4),(i=pas.System.Pos("4269746D6",e))>1&&i<10&&(r+=4),n=new Uint8Array(t-r);for(var l=r+1,h=t;l<=h;l++)i=l,(s=e.charCodeAt(2*i-1-1)-48)>=10&&(s-=7),(o=e.charCodeAt(2*i-1)-48)>=10&&(o-=7),o+=s<<4,n[a]=o,a+=1;return n},this.HexImageDecodeAsBase64=function(t){var i;return i=e.HexImageDecode(t),t=btoa(new Uint8Array(i).reduce((function(e,t){return e+String.fromCharCode(t)}),""))},this.HTMLToString=function(e){return e=pas.SysUtils.StringReplace(e,"<","<",rtl.createSet(0)),pas.SysUtils.StringReplace(e,">",">",rtl.createSet(0))},this.ElementVisible=function(t){var i=!1,a=null;for(i=!1,a=t;null!=a;)pas.SysUtils.LowerCase(a.tagName)===e.cBodyTag&&(i=!0),a=a.parentElement;if(!i)return i;for(;null!=t;){if("none"===t.style.getPropertyValue("display"))return i=!1;if(a=t.parentElement,!rtl.isExt(a,HTMLElement))return i;t=a}return i}}),["SysUtils","WEBLib.Utils"]),rtl.module("contnrs",["System","SysUtils","Classes"],(function(){"use strict";rtl.createClass(this,"TObjectList",pas.Classes.TList,(function(){this.$init=function(){pas.Classes.TList.$init.call(this),this.FFreeObjects=!1},this.Notify=function(e,t){var i=null;this.FFreeObjects&&2===t&&(i=rtl.getObject(e),i=rtl.freeLoc(i)),pas.Classes.TList.Notify.call(this,e,t)},this.Create$2=function(){return pas.Classes.TList.Create$1.call(this),this.FFreeObjects=!0,this}}))}),["JS"]),rtl.module("WEBLib.Graphics",["System","Classes","Types","Web","JS"],(function(){"use strict";var e=this,t=e.$impl;this.WEBDEFAULTFONT="Arial",this.clNone=-1,this.clBlack=0,this.clGray=8421504,this.clSilver=12632256,this.clWhite=16777215,this.clBtnFace=15790320,this.clWindowText=65793,this.clWindow=16711422,this.clHighlight=14120960,this.clHighlightText=197379,this.DEFAULT_CHARSET=1,this.$rtti.$inherited("TColor",rtl.nativeint,{}),this.TPenStyle={0:"psSolid",psSolid:0,1:"psDash",psDash:1,2:"psDot",psDot:2,3:"psDashDot",psDashDot:3,4:"psDashDotDot",psDashDotDot:4,5:"psClear",psClear:5,6:"psInsideFrame",psInsideFrame:6,7:"psUserStyle",psUserStyle:7,8:"psAlternate",psAlternate:8},this.$rtti.$Enum("TPenStyle",{minvalue:0,maxvalue:8,ordtype:1,enumtype:this.TPenStyle}),this.TPenMode={0:"pmBlack",pmBlack:0,1:"pmWhite",pmWhite:1,2:"pmNop",pmNop:2,3:"pmNot",pmNot:3,4:"pmCopy",pmCopy:4,5:"pmNotCopy",pmNotCopy:5,6:"pmMergePenNot",pmMergePenNot:6,7:"pmMaskPenNot",pmMaskPenNot:7,8:"pmMergeNotPen",pmMergeNotPen:8,9:"pmMaskNotPen",pmMaskNotPen:9,10:"pmMerge",pmMerge:10,11:"pmNotMerge",pmNotMerge:11,12:"pmMask",pmMask:12,13:"pmNotMask",pmNotMask:13,14:"pmXor",pmXor:14,15:"pmNotXor",pmNotXor:15},this.$rtti.$Enum("TPenMode",{minvalue:0,maxvalue:15,ordtype:1,enumtype:this.TPenMode}),this.TBrushStyle={0:"bsSolid",bsSolid:0,1:"bsClear",bsClear:1,2:"bsHorizontal",bsHorizontal:2,3:"bsVertical",bsVertical:3,4:"bsFDiagonal",bsFDiagonal:4,5:"bsBDiagonal",bsBDiagonal:5,6:"bsCross",bsCross:6,7:"bsDiagCross",bsDiagCross:7},this.$rtti.$Enum("TBrushStyle",{minvalue:0,maxvalue:7,ordtype:1,enumtype:this.TBrushStyle}),this.TBrushGradient={0:"bgNone",bgNone:0,1:"bgLinearVert",bgLinearVert:1,2:"bgLinearHorz",bgLinearHorz:2,3:"bgRadial",bgRadial:3},this.$rtti.$Enum("TBrushGradient",{minvalue:0,maxvalue:3,ordtype:1,enumtype:this.TBrushGradient}),this.TFontStyle={0:"fsBold",fsBold:0,1:"fsItalic",fsItalic:1,2:"fsStrikeOut",fsStrikeOut:2,3:"fsUnderline",fsUnderline:3},this.$rtti.$Enum("TFontStyle",{minvalue:0,maxvalue:3,ordtype:1,enumtype:this.TFontStyle}),this.$rtti.$Set("TFontStyles",{comptype:this.$rtti.TFontStyle}),this.$rtti.$Int("TFontCharset",{minvalue:0,maxvalue:255,ordtype:3}),this.$rtti.$inherited("TBinaryString",rtl.string,{}),rtl.createClass(this,"TPen",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FWidth=0,this.FColor=0,this.FStyle=0,this.FMode=0},this.SetColor=function(e){this.FColor=e},this.Create$1=function(){return this.FColor=0,this.FWidth=1,this.FStyle=0,this.FMode=4,this},this.Assign=function(t){e.TPen.isPrototypeOf(t)?(this.FColor=rtl.as(t,e.TPen).FColor,this.FStyle=rtl.as(t,e.TPen).FStyle,this.FWidth=rtl.as(t,e.TPen).FWidth):pas.Classes.TPersistent.Assign.apply(this,arguments)};var t=this.$rtti;t.addMethod("Create$1",2,[]),t.addProperty("Color",2,e.$rtti.TColor,"FColor","SetColor"),t.addProperty("Mode",0,e.$rtti.TPenMode,"FMode","FMode",{Default:e.TPenMode.pmCopy}),t.addProperty("Width",0,rtl.longint,"FWidth","FWidth",{Default:1}),t.addProperty("Style",0,e.$rtti.TPenStyle,"FStyle","FStyle",{Default:e.TPenStyle.psSolid})})),rtl.createClass(this,"TGradientColor",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FColor=0,this.FStop=0},this.Assign=function(t){e.TGradientColor.isPrototypeOf(t)&&(this.FColor=rtl.as(t,e.TGradientColor).FColor,this.FStop=rtl.as(t,e.TGradientColor).FStop)};var t=this.$rtti;t.addProperty("Stop",0,rtl.double,"FStop","FStop"),t.addProperty("Color",0,e.$rtti.TColor,"FColor","FColor",{Default:-1})})),rtl.createClass(this,"TBrush",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FColor=0,this.FStyle=0,this.FGradientColors=null,this.FGradient=0},this.$final=function(){this.FGradientColors=void 0,pas.Classes.TPersistent.$final.call(this)},this.Create$1=function(){return this.FColor=16777215,this.FStyle=0,this.FGradient=0,this.FGradientColors=pas.Classes.TList.$create("Create$1"),this},this.Destroy=function(){rtl.free(this,"FGradientColors"),pas.System.TObject.Destroy.call(this)},this.Assign=function(t){e.TBrush.isPrototypeOf(t)?(this.FColor=rtl.as(t,e.TBrush).FColor,this.FStyle=rtl.as(t,e.TBrush).FStyle):pas.Classes.TPersistent.Assign.apply(this,arguments)},this.GetGradientColor=function(e,t,i){if(!(e=0;a--)e=a,this.FParentItem.FItems.GetItem(e)===this&&this.FParentItem.FItems.Delete(e);t.EndUpdate()}if(null!=this.FItems)for(var n=this.FItems.GetCount()-1;n>=0;n--)e=n,(i=this.FItems.GetItem(e)).FParentItem=null,i=rtl.freeLoc(i),this.FItems.Delete(e);pas.Classes.TComponent.Destroy.call(this)},this.Assign=function(t){var i=0,a=null,n=null,s=null;if(e.TMenuItem.isPrototypeOf(t)&&(a=rtl.as(t,e.TMenuItem),this.FAutoCheck=a.FAutoCheck,this.FAutoHotkeys=a.FAutoHotkeys,this.FAutoLineReduction=a.FAutoLineReduction,this.FBreak=a.FBreak,this.FCaption=a.FCaption,this.FChecked=a.FChecked,this.FDefault=a.FDefault,this.FEnabled=a.FEnabled,this.FGroupIndex=a.FGroupIndex,this.FHelpContext=a.FHelpContext,this.FHint=a.FHint,this.FImageIndex=a.FImageIndex,this.FRadioItem=a.FRadioItem,this.FShortCut=a.FShortCut,this.FVisible=a.FVisible,this.FElementClassName=a.FElementClassName,s=this.GetParentMenu(),null!=this.FParentItem&&this.SetName(s.GetUniqueName(a.FCaption)),null!=a.FItems)){if(null!=this.FItems){for(var o=this.FItems.GetCount()-1;o>=0;o--)i=o,this.RemoveItem(this.GetParentMenu().FParent,this.FItems.GetItem(i));this.FItems.Clear()}else this.FItems=e.TMenuItemList.$create("Create$1");for(var r=0,l=a.FItems.GetCount()-1;r<=l;r++)i=r,(n=e.TMenuItem.$create("Create$1",[s.FOwner])).FParentMenu=s,n.FParentItem=this,n.Assign(a.FItems.GetItem(i)),this.FItems.Add(n)}},this.SetParentComponent=function(t){pas.Classes.TComponent.SetParentComponent.apply(this,arguments),this.FParentMenu=t,null!==t&&(e.TCustomMainMenu.isPrototypeOf(t)?t.FItems.IsChild(this)||t.FItems.Add(this):e.TMenuItem.isPrototypeOf(t)&&(t.IsChild(this)||t.Add(this)))},this.Add=function(e){this.Insert$1(this.GetCount(),e)},this.Insert$1=function(t,i){null===this.FItems&&(this.FItems=e.TMenuItemList.$create("Create$1")),this.FItems.Insert(t,i),i.FParentItem=this,null!=i.GetParentMenu()&&i.GetParentMenu().UpdateElement()},this.IsChild=function(e){var t=!1,i=0;if(t=!1,null==this.FItems)return t;for(var a=0,n=this.FItems.GetCount()-1;a<=n;a++)i=a,this.FItems.GetItem(i)===e&&(t=!0);return t},this.GetParentMenu=function(){var t=null,i=null;for(t=null,i=this.FParentMenu;null!=i&&e.TMenuItem.isPrototypeOf(i);)i=i.FParentMenu;return null!=i&&(t=i),t},this.RemoveItem=function(e,t){var i=0;if(null!=t.FItems)for(var a=t.FItems.GetCount()-1;a>=0;a--)i=a,this.RemoveItem(e,t.FItems.GetItem(i));e.RemoveComponent(t)},this.Click=function(){null!=this.FOnClick&&this.FOnClick(this)};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("AutoCheck",0,rtl.boolean,"FAutoCheck","FAutoCheck",{Default:!1}),t.addProperty("AutoHotkeys",0,e.$rtti.TMenuItemAutoFlag,"FAutoHotkeys","FAutoHotkeys",{Default:e.TMenuItemAutoFlag.maParent}),t.addProperty("AutoLineReduction",0,e.$rtti.TMenuItemAutoFlag,"FAutoLineReduction","FAutoLineReduction",{Default:e.TMenuItemAutoFlag.maParent}),t.addProperty("Break",0,e.$rtti.TMenuBreak,"FBreak","FBreak",{Default:e.TMenuBreak.mbNone}),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("Checked",2,rtl.boolean,"FChecked","SetChecked",{Default:!1}),t.addProperty("Default",0,rtl.boolean,"FDefault","FDefault",{Default:!1}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("GroupIndex",0,rtl.byte,"FGroupIndex","FGroupIndex",{Default:0}),t.addProperty("HelpContext",0,e.$rtti.THelpContext,"FHelpContext","FHelpContext",{Default:0}),t.addProperty("Hint",0,rtl.string,"FHint","FHint"),t.addProperty("ImageIndex",2,rtl.longint,"FImageIndex","SetImageIndex",{Default:-1}),t.addProperty("RadioItem",0,rtl.boolean,"FRadioItem","FRadioItem",{Default:!1}),t.addProperty("ShortCut",0,e.$rtti.TShortCut,"FShortCut","FShortCut",{Default:0}),t.addProperty("Visible",0,rtl.boolean,"FVisible","FVisible",{Default:!0}),t.addProperty("ElementClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","FElementClassName"),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick")})),this.$rtti.$Class("TMainMenuAppearance"),rtl.createClass(this,"THamburgerMenu",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FOwner=null,this.FVisible=0,this.FCaption="",this.FBackgroundColor=0,this.FCaptionColor=0,this.FResponsiveMaxWidth=0},this.$final=function(){this.FOwner=void 0,pas.Classes.TPersistent.$final.call(this)},this.SetVisible=function(e){this.FVisible!==e&&(this.FVisible=e,this.FOwner.FOwner.UpdateElement())},this.SetBackgroundColor=function(e){this.FBackgroundColor!==e&&(this.FBackgroundColor=e,this.FOwner.FOwner.UpdateElement())},this.SetCaption=function(e){this.FCaption!==e&&(this.FCaption=e,this.FOwner.FOwner.UpdateElement())},this.SetCaptionColor=function(e){this.FCaptionColor!==e&&(this.FCaptionColor=e,this.FOwner.FOwner.UpdateElement())},this.SetResponsiveMaxWidth=function(e){this.FResponsiveMaxWidth!==e&&(this.FResponsiveMaxWidth=e,this.FOwner.FOwner.UpdateElement())},this.Create$1=function(e){return this.FBackgroundColor=12632256,this.FCaption="Menu",this.FCaptionColor=16777215,this.FVisible=2,this.FResponsiveMaxWidth=768,this.FOwner=e,this},this.Destroy=function(){pas.System.TObject.Destroy.call(this)},this.Assign=function(t){pas.Classes.TPersistent.Assign.apply(this,arguments),e.THamburgerMenu.isPrototypeOf(t)&&(this.FBackgroundColor=rtl.as(t,e.THamburgerMenu).FBackgroundColor,this.FCaption=rtl.as(t,e.THamburgerMenu).FCaption,this.FCaptionColor=rtl.as(t,e.THamburgerMenu).FCaptionColor,this.FVisible=rtl.as(t,e.THamburgerMenu).FVisible,this.FResponsiveMaxWidth=rtl.as(t,e.THamburgerMenu).FResponsiveMaxWidth)};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",e.$rtti.TMainMenuAppearance]]),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("CaptionColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FCaptionColor","SetCaptionColor",{Default:16777215}),t.addProperty("BackgroundColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FBackgroundColor","SetBackgroundColor",{Default:12632256}),t.addProperty("Visible",2,e.$rtti.TMainMenuHamburgerMenuVisible,"FVisible","SetVisible",{Default:e.TMainMenuHamburgerMenuVisible.hmResponsive}),t.addProperty("ResponsiveMaxWidth",2,rtl.longint,"FResponsiveMaxWidth","SetResponsiveMaxWidth",{Default:768})})),rtl.createClass(this,"TMainMenuAppearance",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FOwner=null,this.FBackgroundColor=0,this.FHoverFontColor=0,this.FHoverColor=0,this.FImageURLs=null,this.FHamburgerMenu=null,this.FImageSize=0,this.FSubmenuIndicator=""},this.$final=function(){this.FOwner=void 0,this.FImageURLs=void 0,this.FHamburgerMenu=void 0,pas.Classes.TPersistent.$final.call(this)},this.SetBackgroundColor=function(e){this.FBackgroundColor!==e&&(this.FBackgroundColor=e,this.FOwner.UpdateElement())},this.SetHoverColor=function(e){this.FHoverColor!==e&&(this.FHoverColor=e,this.FOwner.UpdateElement())},this.SetHoverFontColor=function(e){this.FHoverFontColor!==e&&(this.FHoverFontColor=e,this.FOwner.UpdateElement())},this.SetImageURLs=function(e){this.FImageURLs.Assign(e)},this.SetImageSize=function(e){this.FImageSize!==e&&(this.FImageSize=e,this.FOwner.UpdateElement())},this.SetSubmenuIndicator=function(e){this.FSubmenuIndicator!==e&&(this.FSubmenuIndicator=e,this.FOwner.UpdateElement())},this.HandleImageURLsChanged=function(e){this.FOwner.UpdateElement()},this.Create$1=function(t){return this.FBackgroundColor=15790320,this.FHoverColor=14120960,this.FHoverFontColor=197379,this.FHamburgerMenu=e.THamburgerMenu.$create("Create$1",[this]),this.FImageURLs=pas.Classes.TStringList.$create("Create$1"),this.FImageURLs.SetSkipLastLineBreak(!0),this.FImageURLs.FOnChange=rtl.createCallback(this,"HandleImageURLsChanged"),this.FImageSize=16,this.FSubmenuIndicator="►",this.FOwner=t,this},this.Destroy=function(){rtl.free(this,"FHamburgerMenu"),rtl.free(this,"FImageURLs"),pas.System.TObject.Destroy.call(this)},this.Assign=function(t){pas.Classes.TPersistent.Assign.apply(this,arguments),e.TMainMenu.isPrototypeOf(t)&&(this.FBackgroundColor=rtl.as(t,e.TMainMenuAppearance).FBackgroundColor,this.FHoverColor=rtl.as(t,e.TMainMenuAppearance).FHoverColor,this.FHoverFontColor=rtl.as(t,e.TMainMenuAppearance).FHoverFontColor,this.FHamburgerMenu.Assign(rtl.as(t,e.TMainMenuAppearance).FHamburgerMenu),this.FImageURLs.Assign(rtl.as(t,e.TMainMenuAppearance).FImageURLs),this.FImageSize=rtl.as(t,e.TMainMenuAppearance).FImageSize,this.FSubmenuIndicator=rtl.as(t,e.TMainMenuAppearance).FSubmenuIndicator)};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",e.$rtti.TMainMenu]]),t.addProperty("BackgroundColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FBackgroundColor","SetBackgroundColor",{Default:15790320}),t.addProperty("HamburgerMenu",0,e.$rtti.THamburgerMenu,"FHamburgerMenu","FHamburgerMenu"),t.addProperty("HoverColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FHoverColor","SetHoverColor",{Default:14120960}),t.addProperty("HoverFontColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FHoverFontColor","SetHoverFontColor",{Default:197379}),t.addProperty("ImageURLs",2,pas.Classes.$rtti.TStringList,"FImageURLs","SetImageURLs"),t.addProperty("ImageSize",2,rtl.longint,"FImageSize","SetImageSize",{Default:16}),t.addProperty("SubmenuIndicator",2,rtl.string,"FSubmenuIndicator","SetSubmenuIndicator")})),rtl.createClass(this,"TCustomMainMenu",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FItems=null,this.FOnChange=null},this.$final=function(){this.FItems=void 0,this.FOnChange=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.Loaded=function(){pas["WEBLib.Controls"].TCustomControl.Loaded.call(this),this.IsUpdating()||null!=this.GetElementHandle()&&this.UpdateElement()},this.UpdateElement=function(){pas["WEBLib.Controls"].TControl.UpdateElement.call(this),this.IsUpdating()},this.GetUniqueName=function(e){var i="",a=0,n=0,s=!1;n=1,""===e&&(e=this.FName+"item"),e=t.MakeValidName(e);do{i=e+pas.SysUtils.IntToStr(n),s=!0;for(var o=0,r=this.FOwner.GetComponentCount()-1;o<=r;o++)if(a=o,this.FOwner.GetComponent(a).FName===i){s=!1,n+=1;break}}while(!s);return i},this.SetName=function(e){pas["WEBLib.Controls"].TCustomControl.SetName.apply(this,arguments),this.IsUpdating()||0 in this.FComponentState||this.UpdateElement()},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FItems=e.TMenuItem.$create("Create$1",[this]),this.FItems.FParentMenu=this,this.SetWidthStyle(2),this.SetHeight(30)},this.Destroy=function(){rtl.free(this,"FItems"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)};var i=this.$rtti;i.addProperty("Items",0,e.$rtti.TMenuItem,"FItems",""),i.addProperty("OnChange",0,e.$rtti.TMainMenuChangeEvent,"FOnChange","FOnChange")})),rtl.createClass(this,"TMainMenu",this.TCustomMainMenu,(function(){this.$init=function(){e.TCustomMainMenu.$init.call(this),this.FMenu=null,this.FMainMenu=!1,this.FMenuIndex=0,this.FAppearance=null,this.FContainer$1=null,this.FIsPopupMenu=!1,this.FShowPopup=!1,this.FElementItemClassName=""},this.$final=function(){this.FMenu=void 0,this.FAppearance=void 0,this.FContainer$1=void 0,e.TCustomMainMenu.$final.call(this)},this.HandleChange=function(e){var t=null,i=null;return!0,this.FIsPopupMenu&&(this.FShowPopup=!1,this.UpdateElement()),(t=e.target).hasAttribute("id")||(t=t.parentElement),null!=(i=this.GetItemByName(this.FItems,t.id))&&(i.FAutoCheck&&i.SetChecked(!i.FChecked),null!=this.FOnChange&&this.FOnChange(this,i,!1),i.Click()),!0},this.Loaded=function(){e.TCustomMainMenu.Loaded.call(this),this.IsUpdating()||(null==this.FContainer$1&&pas["WEBLib.Forms"].TCustomForm.isPrototypeOf(this.FParent)&&rtl.as(this.FParent,pas["WEBLib.Forms"].TCustomForm).FMenu===this&&(this.FContainer$1=this.FParent),null!=this.GetElementHandle()&&this.UpdateElement())},this.UpdateElement=function(){var t,i="",a="",n="",s="",o="",r=null,l=null,h=null,c=null,d=null,m=null,p=null;e.TCustomMainMenu.UpdateElement.call(this),this.IsUpdating()||null==this.GetElementHandle()&&null==this.FContainer$1||(null!=this.FContainer$1?(r=this.FContainer$1.GetElementHandle(),this.SetVisible(!1)):((r=this.GetElementHandle()).style.setProperty("top",pas.SysUtils.IntToStr(this.GetTop())+"px"),r.style.setProperty("left",pas.SysUtils.IntToStr(this.GetLeft())+"px"),4 in this.FComponentState&&null==this.FContainer$1&&this.GetElementHandle().style.setProperty("background-color","silver")),this.FMenu=r.firstChild,null!=this.FMenu&&this.FMenu.parentElement.removeChild(this.FMenu),3 in this.FComponentState||(this.FMenu=document.createElement("NAV"),this.FMenu.setAttribute("id",this.GetID()+"menu"),this.FMenu.innerHTML="",null!=this.FContainer$1&&(this.FMenu.style.setProperty("top","0"),this.FMenu.style.setProperty("left","0"),this.FMenu.style.setProperty("position","absolute"),this.FMenu.style.setProperty("width","100%"),this.FMenu.style.setProperty("z-index","999997")),r.innerHTML="",r.style.setProperty("overflow","visible"),0!==this.FAppearance.FHamburgerMenu.FVisible&&(o=this.FShowPopup?"block":"none",n=" #"+this.GetID()+"menu .main-menu {\r display: block;\r }\r #"+this.GetID()+"menu #toggle-menu {\r display: none;\r }\r #"+this.GetID()+"menu ul span.drop-label {\r display: inline-block;\r }\r #"+this.GetID()+"menu li {\r float: left;\r border-width: 0 1px 0 0;\r }\r #"+this.GetID()+"menu .popup-menu li, \r #"+this.GetID()+"menu .sub-menu li {\r float: none;\r }\r #"+this.GetID()+"menu .sub-menu {\r top: 100%;\r }\r #"+this.GetID()+"menu .popup-menu { \r top: 0;\r }\r #"+this.GetID()+"menu .popup-menu, \r #"+this.GetID()+"menu .sub-menu {\r border-width: 0;\r margin: 0;\r position: absolute;\r left: 0;\r min-width: 12em;\r z-index: 9999999;\r\t white-space: nowrap;\r }\r #"+this.GetID()+"menu .sub-menu {\r top: 100%;\r }\r #"+this.GetID()+"menu .popup-menu { \r display: "+o+";\r }\r #"+this.GetID()+"menu .sub-menu,\r #"+this.GetID()+'menu input[type="checkbox"]:checked + .popup-menu,\r #'+this.GetID()+'menu input[type="checkbox"]:checked + .sub-menu {\r display: none;\r }\r #'+this.GetID()+"menu .popup-menu li, \r #"+this.GetID()+"menu .sub-menu li {\r border-width: 1px;\r }\r #"+this.GetID()+"menu .popup-menu .sub-menu, \r #"+this.GetID()+"menu .sub-menu .sub-menu {\r top: 0;\r left: 100%;\r }\r #"+this.GetID()+'menu li:hover > input[type="checkbox"] + .popup-menu, \r #'+this.GetID()+'menu li:hover > input[type="checkbox"] + .sub-menu {\r display: block;\r }\r',2===this.FAppearance.FHamburgerMenu.FVisible&&(n="@media only screen and (min-width: "+pas.SysUtils.IntToStr(this.FAppearance.FHamburgerMenu.FResponsiveMaxWidth)+"px) {\r"+n+"}")),this.FAppearance.FImageSize>0&&(s=" width: "+pas.SysUtils.IntToStr(this.FAppearance.FImageSize)+"px;\r height: "+pas.SysUtils.IntToStr(this.FAppearance.FImageSize)+"px;\r"),i="#"+this.GetID()+"menu ul {\r margin: 0;\r padding: 0;\r}\r#"+this.GetID()+"menu .main-menu {\r display: none;\r}\r#"+this.GetID()+"menu .popup-menu {\r display: block;\r}\r#"+this.GetID()+"menu label img.icon,#"+this.GetID()+"menu label span.checked {\r"+s+" margin-right: 10px;\r pointer-events: none;\r}\r#"+this.GetID()+"tm:checked + .main-menu {\r display: block;\r}\r#"+this.GetID()+'menu input[type="checkbox"],\r#'+this.GetID()+"menu ul span.drop-label {\r display: none;\r}\r#"+this.GetID()+"menu li,\r#"+this.GetID()+"menu #toggle-menu,\r#"+this.GetID()+"menu .popup-menu,\r#"+this.GetID()+"menu .sub-menu {\r border-width: 1px;\r border-style: solid;\r border-color: rgba(0, 0, 0, .05);\r border-bottom: 0px;\r border-top: 0px;\r}\r#"+this.GetID()+"menu li,\r#"+this.GetID()+"menu #toggle-menu {\r border-width: 0 0 3px;\r}\r#"+this.GetID()+"menu .popup-menu,\r#"+this.GetID()+"menu .sub-menu {\r border-width: 1px 1px 0;\r margin: 0 1em;\r}\r#"+this.GetID()+"menu .popup-menu li:first-child,\r#"+this.GetID()+"menu .sub-menu li:first-child {\r border-top: 1px solid;\r border-color: rgba(0, 0, 0, .05);\r}\r#"+this.GetID()+"menu .popup-menu li:last-child,\r#"+this.GetID()+"menu .sub-menu li:last-child {\r border-bottom: 1px solid;\r border-color: rgba(0, 0, 0, .05);\r}\r#"+this.GetID()+"menu li,\r#"+this.GetID()+"menu #toggle-menu,\r#"+this.GetID()+"menu li label {\r position: relative;\r display: block;\r}\r#"+this.GetID()+"menu #toggle-menu,\r#"+this.GetID()+"menu li label { \r padding: 0.75em 1.5em;\r text-decoration: none;\r}\r#"+this.GetID()+"menu li span.menu-separator { \r display: block;\r width: 100%;\r height: 1px;\r background-color: rgba(0, 0, 0, .05);\r}\r#"+this.GetID()+"menu .popup-menu, \r#"+this.GetID()+"menu .sub-menu {\r display: none;\r}\r#"+this.GetID()+'menu input[type="checkbox"]:checked + .popup-menu,\r#'+this.GetID()+'menu input[type="checkbox"]:checked + .sub-menu {\r display: block;\r z-index: 3000;\r}\r#'+this.GetID()+"menu span.drop-icon {\r margin-left: 10px;}\r#"+this.GetID()+"menu span.hamburger-icon {\r float: right;\r padding: 0;\r margin: 0;\r font-weight: 900;\r}\r@media only screen and (max-width: 64em) and (min-width: 52.01em) {\r #"+this.GetID()+"menu li {\r width: auto;\r }\r #"+this.GetID()+"menu .sub-menu li {\r width: auto;\r }\r}\r",a="",""===this.FElementClassName&&(a="#"+this.GetID()+"menu .popup-menu, \r#"+this.GetID()+"menu .sub-menu {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FBackgroundColor)+";\r}\r@media only screen and (max-width: 64em) and (min-width: 52.01em) {\r#"+this.GetID()+"menu .sub-menu {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHamburgerMenu.FBackgroundColor)+";\r}\r}\r#"+this.GetID()+"menu li,\r#"+this.GetID()+"menu #toggle-menu,\r#"+this.GetID()+"menu li label {\r}\r#"+this.GetID()+"menu #toggle-menu {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHamburgerMenu.FBackgroundColor)+";\r color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHamburgerMenu.FCaptionColor)+";\r}\r#"+this.GetID()+"menu .main-menu li label {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FBackgroundColor)+";\r}\r#"+this.GetID()+"menu li label:hover {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHoverColor)+";\r color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHoverFontColor)+";\r}\r#"+this.GetID()+"menu .popup-menu label:hover, \r#"+this.GetID()+"menu .sub-menu label:hover {\r background-color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHoverColor)+";\r color: "+pas["WEBLib.Graphics"].ColorToHTML(this.FAppearance.FHoverFontColor)+";\r}\r"),i=i+a+n,this.FMainMenu=!0,this.FMenuIndex=0,(m=document.createElement("STYLE")).innerHTML=i,(p=document.createElement("SCRIPT")).innerHTML="function "+this.GetID()+'MenuClick(ctrl){ el = ctrl.parentElement.parentElement; el.style.display = "none"; setTimeout(function(){el.style.removeProperty("display")}, 25);}function '+this.GetID()+'MenuOut(ctrl){ menuel = document.getElementById("'+this.GetID()+'"); if(menuel) { popupel = menuel.getElementsByClassName("popup-menu"); if(popupel) setTimeout(function(){popupel[0].style.display = "none"}, 25); }}',(l=document.createElement("LABEL")).setAttribute("for",this.GetID()+"tm"),l.setAttribute("id","toggle-menu"),l.innerHTML=this.FAppearance.FHamburgerMenu.FCaption,h=document.createElement("SPAN"),""!==this.FElementItemClassName?h.setAttribute("class",this.FElementItemClassName):h.setAttribute("class","drop-label"),l.appendChild(h),(c=document.createElement("SPAN")).setAttribute("class","hamburger-icon"),c.innerHTML="☰",h.appendChild(c),(d=document.createElement("INPUT")).setAttribute("type","checkbox"),d.setAttribute("id",this.GetID()+"tm"),this.FMenu.appendChild(m),this.FMenu.appendChild(p),this.FMenu.appendChild(l),this.FMenu.appendChild(d),null!==(t=this.GetMenuSource(this.FItems))&&this.FMenu.appendChild(t),r.appendChild(this.FMenu)))},this.GetMenuSource=function(e){var i=null,a=0,n=null,s="",o=null,r=null,l=null,h=null,c=0,d="";if(i=null,null!=e.FItems&&e.FItems.GetCount()>0){i=document.createElement("UL"),this.FMainMenu?(this.FMainMenu=!1,s=this.FIsPopupMenu?"popup-menu":"main-menu"):s="sub-menu",this.FMenuIndex=this.FMenuIndex+1,i.setAttribute("class",s);for(var m=0,p=e.FItems.GetCount()-1;m<=p;m++)a=m,c+=1,""===(n=e.FItems.GetItem(a)).FName&&(d=pas.SysUtils.StringReplace(n.FCaption," ","",rtl.createSet(0)),""===(d=t.MakeValidName(d))&&(d="MenuItem"+pas.SysUtils.IntToStr(c)),n.SetName(d+pas.SysUtils.IntToStr(c))),n.FVisible&&(o=document.createElement("LI"),"-"!==n.FCaption?(r=document.createElement("LABEL"),""!==this.FElementItemClassName?r.setAttribute("class",this.FElementItemClassName):r.setAttribute("class","drop-label"),r.setAttribute("title",n.FHint),n.FImageIndex>=0&&this.FAppearance.FImageURLs.GetCount()>n.FImageIndex?r.innerHTML='':n.FChecked&&(n.FRadioItem?r.innerHTML='':r.innerHTML=''),r.innerHTML=r.innerHTML+n.FCaption):((r=document.createElement("SPAN")).setAttribute("class","menu-separator"),r.innerHTML=""),null!=n.FItems&&n.FItems.GetCount()>0?((h=document.createElement("SPAN")).setAttribute("class","drop-icon"),h.innerHTML=this.FAppearance.FSubmenuIndicator,r.setAttribute("for","sm"+pas.SysUtils.IntToStr(this.FMenuIndex)),r.appendChild(h),n.FEnabled||r.style.setProperty("color","gray"),(l=document.createElement("INPUT")).setAttribute("type","checkbox"),l.setAttribute("id","sm"+pas.SysUtils.IntToStr(this.FMenuIndex)),o.appendChild(r),o.appendChild(l),n.FEnabled&&o.appendChild(this.GetMenuSource(n))):(r.setAttribute("for",this.GetID()+"tm"),r.setAttribute("id",n.FName),n.FEnabled?("sub-menu"===s&&n.FEnabled&&r.setAttribute("onMouseUp",this.GetID()+"MenuClick(this);"),r.addEventListener("click",rtl.createSafeCallback(this,"HandleChange"))):r.style.setProperty("color","gray"),o.appendChild(r)),i.appendChild(o))}return i},this.GetItemByName=function(e,t){var i=null,a=0,n=null;if(i=null,null!=e.FItems)for(var s=0,o=e.FItems.GetCount()-1;s<=o;s++){if(a=s,(n=e.FItems.GetItem(a)).FName===t)return i=n,null!=n.FOnClick&&(i.FOnClick=n.FOnClick),i;null==i&&(i=this.GetItemByName(n,t))}return i},this.CreateInitialize=function(){e.TCustomMainMenu.CreateInitialize.call(this),this.FAppearance=e.TMainMenuAppearance.$create("Create$1",[this]),this.FContainer$1=null,this.FMainMenu=!0,this.FMenuIndex=0,this.FIsPopupMenu=!1,this.FShowPopup=!1,this.SetTop(0),this.SetLeft(0),this.SetWidth(100),4 in this.FComponentState&&(this.SetElementPosition(1),this.SetWidthPercent(100),this.SetWidthStyle(0))},this.CreateElement=function(){var e=null,t=null;return 4 in this.FComponentState?(e=document.createElement("DIV"),(t=document.createElement("DIV")).innerHTML="TWebMainMenu",this.SetBorderStyle(1),t.setAttribute("align","center"),t.style.setProperty("border","1px solid gray"),t.style.setProperty("vertical-align","middle"),t.style.setProperty("display","table-cell"),e.appendChild(t)):(e=document.createElement("DIV"),this.FIsPopupMenu&&e.setAttribute("onMouseLeave",this.GetID()+"MenuOut(this);")),e},this.Destroy=function(){rtl.free(this,"FAppearance"),e.TCustomMainMenu.Destroy.call(this)};var i=this.$rtti;i.addProperty("Appearance",0,e.$rtti.TMainMenuAppearance,"FAppearance","FAppearance"),i.addProperty("Container",0,pas["WEBLib.Controls"].$rtti.TControl,"FContainer$1","FContainer$1"),i.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),i.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),i.addProperty("ElementItemClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementItemClassName","FElementItemClassName"),i.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),i.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0})})),rtl.createClass(this,"TPopupMenu",this.TMainMenu,(function(){this.$init=function(){e.TMainMenu.$init.call(this),this.FOnPopup=null},this.$final=function(){this.FOnPopup=void 0,e.TMainMenu.$final.call(this)},this.Create$1=function(e){return pas["WEBLib.Controls"].TControl.Create$1.apply(this,arguments),pas["WEBLib.Controls"].TControl.isPrototypeOf(e)&&this.SetParent(e),this},this.CreateInitialize=function(){e.TMainMenu.CreateInitialize.call(this),this.FAppearance.FHamburgerMenu.SetVisible(1),this.FIsPopupMenu=!0},this.Popup=function(e,t){null!=this.FOnPopup&&this.FOnPopup(this),this.SetTop(t),this.SetLeft(e),this.FShowPopup=!0,this.UpdateElement(),this.FShowPopup=!1};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("OnPopup",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnPopup","FOnPopup")})),rtl.createClass(this,"TWebCustomControl",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FPopupMenu=null},this.$final=function(){this.FPopupMenu=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.HandleDoContextMenu=function(e){var t=!1,i=pas.Types.TPoint.$new(),a=null,n=null;return pas["WEBLib.Controls"].TControl.HandleDoContextMenu.apply(this,arguments),null!=this.FPopupMenu&&(e.stopPropagation(),e.preventDefault(),i.$assign(pas.Types.Point(Math.round(e.clientX),Math.round(e.clientY))),null!=(a=pas["WEBLib.Forms"].GetParentForm(this))&&null!=a.GetContainer()&&(n=a.GetContainer().getBoundingClientRect(),i.x=i.x-Math.round(n.left),i.y=i.y-Math.round(n.top)),this.FPopupMenu.Popup(i.x,i.y),t=!0),t},this.Notification=function(e,t){pas.Classes.TComponent.Notification.apply(this,arguments),1===t&&e===this.FPopupMenu&&(this.FPopupMenu=null)}})),e.$implcode=function(){var e=rtl.createSet(null,65,90,null,97,122,95),i=rtl.unionSet(e,rtl.createSet(null,48,57));t.MakeValidName=function(e){var t="",a=0;t="";for(var n=1,s=e.length;n<=s;n++)a=n,e.charCodeAt(a-1)in i&&(t+=e.charAt(a-1));return t}}}),["Types","WEBLib.Forms"]),rtl.module("Rtl.BrowserLoadHelper",["System","Classes","SysUtils","JS","Web"],(function(){"use strict";var e=this;rtl.createClass(this,"TBrowserLoadHelper",pas.Classes.TLoadHelper,(function(){})),e.$init=function(){pas.Classes.SetLoadHelperClass(e.TBrowserLoadHelper)}})),rtl.module("WEBLib.Forms",["System","Classes","Types","SysUtils","WEBLib.Graphics","WEBLib.Controls","WEBLib.Lang","WEBLib.Menus","Web","JS","Rtl.BrowserLoadHelper"],(function(){"use strict";var e=this,t=e.$impl;this.idOK=1,this.idCancel=2,this.idAbort=3,this.idRetry=4,this.idIgnore=5,this.idYes=6,this.idNo=7,this.idClose=8,this.idHelp=9,this.idContinue=11,this.mrNone=0,this.mrOk=1,this.mrCancel=2,this.mrAbort=3,this.mrRetry=4,this.mrIgnore=5,this.mrYes=6,this.mrNo=7,this.mrClose=8,this.mrHelp=9,this.mrContinue=11,this.mrAll=12,this.mrNoToAll=13,this.mrYesToAll=14,this.rgiFirst=-1024,this.igiLast=511,this.clTMSBlue=14917120,this.$rtti.$Int("TConstraintSize",{minvalue:0,maxvalue:2147483647,ordtype:5}),this.TCloseAction={0:"caNone",caNone:0,1:"caHide",caHide:1,2:"caFree",caFree:2,3:"caMinimize",caMinimize:3},this.$rtti.$Enum("TCloseAction",{minvalue:0,maxvalue:3,ordtype:1,enumtype:this.TCloseAction}),this.TFormStyle={0:"fsNormal",fsNormal:0,1:"fsStayOnTop",fsStayOnTop:1},this.$rtti.$Enum("TFormStyle",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TFormStyle}),this.TNavigationTarget={0:"ntBlank",ntBlank:0,1:"ntPage",ntPage:1},this.$rtti.$Int("TGestureID",{minvalue:-1024,maxvalue:511,ordtype:2}),this.TInteractiveGestureFlag={0:"gfBegin",gfBegin:0,1:"gfInertia",gfInertia:1,2:"gfEnd",gfEnd:2},this.$rtti.$Enum("TInteractiveGestureFlag",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TInteractiveGestureFlag}),this.$rtti.$Set("TInteractiveGestureFlags",{comptype:this.$rtti.TInteractiveGestureFlag}),this.TMouseActivate={0:"maDefault",maDefault:0,1:"maActivate",maActivate:1,2:"maActivateAndEat",maActivateAndEat:2,3:"maNoActivate",maNoActivate:3,4:"maNoActivateAndEat",maNoActivateAndEat:4},this.$rtti.$Enum("TMouseActivate",{minvalue:0,maxvalue:4,ordtype:1,enumtype:this.TMouseActivate}),this.TScreenOrientation={0:"soPortrait",soPortrait:0,1:"soLandscape",soLandscape:1},this.$rtti.$Enum("TScreenOrientation",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TScreenOrientation}),this.TApplicationColorScheme={0:"csNoScheme",csNoScheme:0,1:"csLight",csLight:1,2:"csDark",csDark:2},rtl.recNewT(this,"TSmallPoint",(function(){this.x=0,this.y=0,this.$eq=function(e){return this.x===e.x&&this.y===e.y},this.$assign=function(e){return this.x=e.x,this.y=e.y,this};var t=e.$rtti.$Record("TSmallPoint",{});t.addField("x",rtl.smallint),t.addField("y",rtl.smallint)})),rtl.recNewT(this,"TAlignInfo",(function(){this.AlignList=null,this.ControlIndex=0,this.Align=0,this.Scratch=0,this.$eq=function(e){return this.AlignList===e.AlignList&&this.ControlIndex===e.ControlIndex&&this.Align===e.Align&&this.Scratch===e.Scratch},this.$assign=function(e){return this.AlignList=e.AlignList,this.ControlIndex=e.ControlIndex,this.Align=e.Align,this.Scratch=e.Scratch,this};var t=e.$rtti.$Record("TAlignInfo",{});t.addField("AlignList",pas.Classes.$rtti.TList),t.addField("ControlIndex",rtl.longint),t.addField("Align",pas["WEBLib.Controls"].$rtti.TAlign),t.addField("Scratch",rtl.longint)})),rtl.recNewT(this,"TGestureEventInfo",(function(){this.GestureID=0,this.Angle=0,this.Distance=0,this.$new=function(){var t=Object.create(this);return t.Location=pas.Types.TPoint.$new(),t.Flags={},t.InertiaVector=e.TSmallPoint.$new(),t.TapLocation=e.TSmallPoint.$new(),t},this.$eq=function(e){return this.GestureID===e.GestureID&&this.Location.$eq(e.Location)&&rtl.eqSet(this.Flags,e.Flags)&&this.Angle===e.Angle&&this.InertiaVector.$eq(e.InertiaVector)&&this.Distance===e.Distance&&this.TapLocation.$eq(e.TapLocation)},this.$assign=function(e){return this.GestureID=e.GestureID,this.Location.$assign(e.Location),this.Flags=rtl.refSet(e.Flags),this.Angle=e.Angle,this.InertiaVector.$assign(e.InertiaVector),this.Distance=e.Distance,this.TapLocation.$assign(e.TapLocation),this};var t=e.$rtti.$Record("TGestureEventInfo",{});t.addField("GestureID",e.$rtti.TGestureID),t.addField("Location",pas.Types.$rtti.TPoint),t.addField("Flags",e.$rtti.TInteractiveGestureFlags),t.addField("Angle",rtl.double),t.addField("InertiaVector",e.$rtti.TSmallPoint),t.addField("Distance",rtl.longint),t.addField("TapLocation",e.$rtti.TSmallPoint)})),this.$rtti.$MethodVar("TCloseEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Action",this.$rtti.TCloseAction,1]]),methodkind:0}),this.$rtti.$MethodVar("TCloseQueryEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["CanClose",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TOrientationChangeEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["AOrientation",this.$rtti.TScreenOrientation]]),methodkind:0}),this.$rtti.$MethodVar("TBeforeUnloadEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["AMessage",rtl.string,1]]),methodkind:0}),this.$rtti.$MethodVar("TAlignInsertBeforeEvent",{procsig:rtl.newTIProcSig([["Sender",pas["WEBLib.Controls"].$rtti.TWinControl],["C1",pas["WEBLib.Controls"].$rtti.TControl],["C2",pas["WEBLib.Controls"].$rtti.TControl]],rtl.boolean),methodkind:1}),this.$rtti.$MethodVar("TAlignPositionEvent",{procsig:rtl.newTIProcSig([["Sender",pas["WEBLib.Controls"].$rtti.TWinControl],["Control",pas["WEBLib.Controls"].$rtti.TControl],["NewLeft",rtl.longint,1],["NewTop",rtl.longint,1],["NewWidth",rtl.longint,1],["NewHeight",rtl.longint,1],["AlignRect",pas.Types.$rtti.TRect,1],["AlignInfo",this.$rtti.TAlignInfo]]),methodkind:0}),this.$rtti.$MethodVar("TCanResizeEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["NewWidth",rtl.longint,1],["NewHeight",rtl.longint,1],["Resize",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TConstrainedResizeEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["MinWidth",rtl.longint,1],["MinHeight",rtl.longint,1],["MaxWidth",rtl.longint,1],["MaxHeight",rtl.longint,1]]),methodkind:0}),this.$rtti.$MethodVar("TContextPopupEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["MousePos",pas.Types.$rtti.TPoint],["Handled",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TDockDropEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Source",this.$rtti.TDragDockObject],["X",rtl.longint],["Y",rtl.longint]]),methodkind:0}),this.$rtti.$MethodVar("TDockOverEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Source",this.$rtti.TDragDockObject],["X",rtl.longint],["Y",rtl.longint],["State",pas["WEBLib.Controls"].$rtti.TDragState],["Accept",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TGestureEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["EventInfo",this.$rtti.TGestureEventInfo,2],["Handled",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TGetSiteInfoEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["DockClient",pas["WEBLib.Controls"].$rtti.TControl],["InfluenceRect",pas.Types.$rtti.TRect,1],["MousePos",pas.Types.$rtti.TPoint],["CanDock",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TMouseActivateEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Button",pas["WEBLib.Controls"].$rtti.TMouseButton],["Shift",pas.Classes.$rtti.TShiftState],["X",rtl.longint],["Y",rtl.longint],["HitTest",rtl.longint],["MouseActivate",this.$rtti.TMouseActivate,1]]),methodkind:0}),this.$rtti.$MethodVar("TMouseWheelUpDownEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Shift",pas.Classes.$rtti.TShiftState],["MousePos",pas.Types.$rtti.TPoint],["Handled",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("TStartDockEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["DragObject",this.$rtti.TDragDockObject,1]]),methodkind:0}),this.$rtti.$MethodVar("TUnDockEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["Client",pas["WEBLib.Controls"].$rtti.TControl],["NewTarget",pas["WEBLib.Controls"].$rtti.TWinControl],["Allow",rtl.boolean,1]]),methodkind:0}),this.$rtti.$MethodVar("THashChangeEvent",{procsig:rtl.newTIProcSig([["Sender",pas.System.$rtti.TObject],["oldURL",rtl.string],["newURL",rtl.string]]),methodkind:0}),this.TPopupMode={0:"pmNone",pmNone:0,1:"pmAuto",pmAuto:1,2:"pmExplicit",pmExplicit:2},this.TPopupClose={0:"pcOnDeactivate",pcOnDeactivate:0,1:"pcNever",pcNever:1},this.TPosition={0:"poDesigned",poDesigned:0,1:"poDefault",poDefault:1,2:"poDefaultPosOnly",poDefaultPosOnly:2,3:"poDefaultSizeOnly",poDefaultSizeOnly:3,4:"poScreenCenter",poScreenCenter:4,5:"poDesktopCenter",poDesktopCenter:5,6:"poMainFormCenter",poMainFormCenter:6,7:"poOwnerFormCenter",poOwnerFormCenter:7},this.TApplicationErrorType={0:"aeSilent",aeSilent:0,1:"aeDialog",aeDialog:1,2:"aeAlert",aeAlert:2,3:"aeFooter",aeFooter:3},this.TFormBorderStyle={0:"fbNone",fbNone:0,1:"fbSingle",fbSingle:1,2:"fbSizeable",fbSizeable:2,3:"fbDialog",fbDialog:3,4:"fbDialogSizeable",fbDialogSizeable:4},this.TCSSLibrary={0:"cssNone",cssNone:0,1:"cssBootstrap",cssBootstrap:1},this.$rtti.$Enum("TCSSLibrary",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TCSSLibrary}),rtl.createClass(this,"TCustomSizeConstraints",pas.Classes.TPersistent,(function(){this.$init=function(){pas.Classes.TPersistent.$init.call(this),this.FControl=null,this.FMaxHeight=0,this.FMaxWidth=0,this.FMinHeight=0,this.FMinWidth=0,this.FOnChange=null},this.$final=function(){this.FControl=void 0,this.FOnChange=void 0,pas.Classes.TPersistent.$final.call(this)},this.SetConstraints=function(e,t){var i=e;0===i?t!==this.FMaxHeight&&(this.FMaxHeight=t,t>0&&t0&&t0&&t>this.FMaxHeight&&(this.FMaxHeight=t),this.Change()):3===i&&t!==this.FMinWidth&&(this.FMinWidth=t,this.FMaxWidth>0&&t>this.FMaxWidth&&(this.FMaxWidth=t),this.Change())},this.Change=function(){null!=this.FOnChange&&this.FOnChange(this)},this.AssignTo=function(t){e.TCustomSizeConstraints.isPrototypeOf(t)?(t.FMinHeight=this.FMinHeight,t.FMaxHeight=this.FMaxHeight,t.FMinWidth=this.FMinWidth,t.FMaxWidth=this.FMaxWidth,t.Change()):pas.Classes.TPersistent.AssignTo.call(this,t)},this.Create$1=function(e){return pas.System.TObject.Create.call(this),this.FControl=e,this},this.$rtti.addMethod("Create$1",2,[["AControl",pas["WEBLib.Controls"].$rtti.TControl]])})),rtl.createClass(this,"TSizeConstraints",this.TCustomSizeConstraints,(function(){var t=this.$rtti;t.addProperty("MaxHeight",18,e.$rtti.TConstraintSize,"FMaxHeight","SetConstraints",{index:0,Default:0}),t.addProperty("MaxWidth",18,e.$rtti.TConstraintSize,"FMaxWidth","SetConstraints",{index:1,Default:0}),t.addProperty("MinHeight",18,e.$rtti.TConstraintSize,"FMinHeight","SetConstraints",{index:2,Default:0}),t.addProperty("MinWidth",18,e.$rtti.TConstraintSize,"FMinWidth","SetConstraints",{index:3,Default:0})})),rtl.createClass(this,"TDragDockObject",pas.System.TObject,(function(){this.$init=function(){pas.System.TObject.$init.call(this),this.FBrush=null},this.$final=function(){this.FBrush=void 0,pas.System.TObject.$final.call(this)},this.Destroy=function(){rtl.free(this,"FBrush"),pas.System.TObject.Destroy.call(this)}})),rtl.createClass(this,"TCustomForm",pas["WEBLib.Controls"].TWinControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TWinControl.$init.call(this),this.FDesignContainer=null,this.FLayer$1=null,this.FPopup=!1,this.FPopupElement=null,this.FFormFileName="",this.FFormContainer="",this.FFormElement="",this.FFormStyle=0,this.FOnCreate=null,this.FOnShow=null,this.FModalResult=0,this.FOnPaint=null,this.FOnDeactivate=null,this.FOnCloseQuery=null,this.FOnClose=null,this.FModalProc=null,this.FCaption="",this.FIsResizing$1=!1,this.FOnScroll=null,this.FOnUnload=null,this.FOnBeforeUnload=null,this.FPopupMode=0,this.FPopupClose=0,this.FPosition=0,this.FMdx=0,this.FMdy=0,this.FDlgX=0,this.FDlgY=0,this.FCaptured$1=!1,this.FDown=!1,this.FHasCaption=!1,this.FMoveSpan=null,this.FCaptionElement=null,this.FCaptionCloseElement=null,this.FBorder=0,this.FShadow=!1,this.FTimerID=0,this.FOldWidth=0,this.FOldHeight=0,this.FOnDestroy=null,this.FPopupOpacity=0,this.FCreating=!1,this.FShown=!1,this.FLoadedPtr=null,this.FDOMContentLoadedPtr=null,this.FUnloadPtr=null,this.FBeforeUnloadPtr=null,this.FResizePtr=null,this.FScrollPtr=null,this.FDocMouseUpPtr=null,this.FDocMouseMovePtr=null,this.FTitleDownPtr=null,this.FDoClickPtr=null,this.FKeyDownPtr$1=null,this.FOrientationChangePtr=null,this.FHashChangePtr=null,this.FCSSLibrary=0,this.FNoHTML=!1,this.FPrevActiveForm=null,this.FElementCaptionClassName="",this.FElementPopupClassName="",this.FMenu=null,this.FResizeObserver=null,this.FOnOrientationChange=null,this.FOnDOMContentLoaded=null,this.FShowClose=!1,this.FOnHashChange=null},this.$final=function(){this.FDesignContainer=void 0,this.FLayer$1=void 0,this.FPopupElement=void 0,this.FOnCreate=void 0,this.FOnShow=void 0,this.FOnPaint=void 0,this.FOnDeactivate=void 0,this.FOnCloseQuery=void 0,this.FOnClose=void 0,this.FModalProc=void 0,this.FOnScroll=void 0,this.FOnUnload=void 0,this.FOnBeforeUnload=void 0,this.FMoveSpan=void 0,this.FCaptionElement=void 0,this.FCaptionCloseElement=void 0,this.FOnDestroy=void 0,this.FPrevActiveForm=void 0,this.FMenu=void 0,this.FResizeObserver=void 0,this.FOnOrientationChange=void 0,this.FOnDOMContentLoaded=void 0,this.FOnHashChange=void 0,pas["WEBLib.Controls"].TWinControl.$final.call(this)},this.SetModalResult=function(e){this.FModalResult=e,0!==this.FModalResult&&this.Close()},this.GetFormStyle=function(){return this.FFormStyle},this.SetFormStyle=function(e){this.FFormStyle=e},this.SetCaption=function(e){this.FCaption!==e&&(this.FCaption=e,this.UpdateElement())},this.SetShadow=function(e){this.FShadow!==e&&(this.FShadow=e,this.UpdateElement())},this.SetFormContainer=function(e){var t,i=null,a=0;if(t=this.GetContainer(),4 in this.FComponentState?this.FFormContainer=e:"BODY"===pas.SysUtils.UpperCase(e)?this.FFormContainer="":this.FFormContainer=e,(!(0 in this.FComponentState)||4 in this.FComponentState)&&(null!=this.FLayer$1?i=this.FLayer$1:(""===e||null==(i=document.getElementById(e)))&&(i=document.body),null!=i&&(this.FContainer=i,null!=t)))for(var n=0,s=this.GetControlsCount()-1;n<=s;n++)a=n,this.GetControls(a).FParentElement===t&&(this.GetControls(a).FParentElement=i),null!=this.GetControls(a).GetElementHandle()&&this.GetControls(a).GetElementHandle().parentElement===t&&i.appendChild(this.GetControls(a).GetElementHandle())},this.SetWidth=function(e){var t=null;0 in this.FComponentState&&""!==this.FFormContainer||!this.FPopup&&null==this.GetElementHandle()?this.SetWidthInt(e):(pas["WEBLib.Controls"].TControl.SetWidth.apply(this,arguments),this.FPopup&&null!=(t=this.FPopupElement)&&t.style.setProperty("width",pas.SysUtils.IntToStr(e)+"px"))},this.SetHeight=function(e){var t=null;if(0 in this.FComponentState&&""!==this.FFormContainer||!this.FPopup&&null==this.GetElementHandle())return this.SetHeightInt(e),void(null!=this.FormContainerElement()&&("BODY"===pas.SysUtils.UpperCase(this.FormContainerElement().tagName)||this.GetIsLinked()||this.FormContainerElement().style.setProperty("height",pas.SysUtils.IntToStr(e)+"px")));pas["WEBLib.Controls"].TControl.SetHeight.apply(this,arguments),""!==this.FFormContainer&&null!=this.FormContainerElement()&&(this.FormContainerElement().style.setProperty("height",pas.SysUtils.IntToStr(e)+"px"),this.Realign()),this.FPopup&&null!=(t=this.FPopupElement)&&t.style.setProperty("height",pas.SysUtils.IntToStr(e)+"px")},this.HandleHashChange=function(t){var i,a,n="",s=null,o=null;return i=t.oldURL,a=t.newURL,null!=this.FOnHashChange&&this.FOnHashChange(this,i,a),e.Application.FRouting&&(n=pas.System.Copy(a,pas.System.Pos("#",a)+1,a.length),null!=(s=pas.Classes.GetClass("T"+this.FName))&&e.LastHash!==n&&(0!==pas.System.Pos("#"+this.FName+"_",i+"_")&&0===pas.System.Pos("#"+this.FName+"_",a+"_")&&this.Close(),this.FPopup||null!=(s=pas.Classes.GetClass("T"+n))&&e.Application.AutoCreateForm(s,{get:function(){return o},set:function(e){o=e}}))),!0,!0},this.HandleLoaded=function(e){return this.Resize$1(),this.InitAnchoring(),!0,!0},this.HandleDOMContentLoaded=function(e){return null!=this.FOnDOMContentLoaded&&this.FOnDOMContentLoaded(this),!0,!0},this.HandleScroll=function(e){return null!=this.FOnScroll&&this.FOnScroll(this),!0,!0},this.HandleUnload=function(e){return null!=this.FOnUnload&&this.FOnUnload(this),!0,!0},this.HandleBeforeUnload=function(e){var t="";return t="",null!=this.FOnBeforeUnload&&this.FOnBeforeUnload(this,{get:function(){return t},set:function(e){t=e}}),""!==t?(e.returnValue=t,t):(!0,!0)},this.HandleObserver=function(){return this.Resize$1(),!0,!0},this.HandleResize=function(e){return this.FVisible&&!(3 in this.FComponentState)&&(null==this.GetContainer()&&this.CreateControl(),this.Resize$1(),this.GetElementHandle()===document.body&&window.setTimeout(rtl.createSafeCallback(this,"Resize$1"),25)),!0,!0},this.HandleDocMouseMove=function(e){var t=0,i=0,a=null,n=0,s=0;return this.FDown&&null!=this.GetContainer()&&(t=e.clientX-this.FMdx,i=e.clientY-this.FMdy,(a=this.FHasCaption&&""!==this.FFormFileName?this.GetContainer().parentNode:this.GetContainer()).style.setProperty("transform",""),a.style.setProperty("position","absolute"),n=Math.round(this.FDlgX+t),s=Math.round(this.FDlgY+i),a.style.setProperty("left",pas.SysUtils.IntToStr(n)+"px"),a.style.setProperty("top",pas.SysUtils.IntToStr(s)+"px"),this.FLeft=n,this.FTop=s),!0,!0},this.HandleDocMouseUp=function(e){return this.FDown&&(this.FCaptured$1=!1,this.FDown=!1,document.body.removeEventListener("mousemove",this.FDocMouseMovePtr),document.body.removeEventListener("mouseup",this.FDocMouseUpPtr),null!=this.FMoveSpan&&document.body.removeChild(this.FMoveSpan),this.FEventStopPropagation=rtl.unionSet(this.FEventStopPropagation,rtl.createSet(3,2)),this.FMoveSpan=null),!0,!0},this.HandleTitleDown=function(e){var t=null;return e.stopPropagation(),e.preventDefault(),this.FPopupClose=1,this.FMdx=Math.round(e.clientX),this.FMdy=Math.round(e.clientY),t=this.FHasCaption&&""!==this.FFormFileName?this.GetContainer().parentNode.getBoundingClientRect():this.GetContainer().getBoundingClientRect(),this.FDlgX=Math.round(pas.System.Int(t.left)),this.FDlgY=Math.round(pas.System.Int(t.top)),this.FDown=!0,this.FCaptured$1||(this.FCaptured$1=!0,this.FMoveSpan=document.createElement("SPAN"),this.FMoveSpan.style.setProperty("top","0"),this.FMoveSpan.style.setProperty("left","0"),this.FMoveSpan.style.setProperty("right","0"),this.FMoveSpan.style.setProperty("bottom","0"),this.FMoveSpan.style.setProperty("position","absolute"),document.body.appendChild(this.FMoveSpan),this.FEventStopPropagation=rtl.diffSet(this.FEventStopPropagation,rtl.createSet(3,2)),document.body.addEventListener("mousemove",this.FDocMouseMovePtr),document.body.addEventListener("mouseup",this.FDocMouseUpPtr)),!0,!0},this.HandleCloseClick=function(e){var t=!1;return t=!0,null!=this.FOnCloseQuery&&this.FOnCloseQuery(this,{get:function(){return t},set:function(e){t=e}}),t&&this.Close(),!0,!0},this.SetLeft=function(e){var t=null;pas["WEBLib.Controls"].TControl.SetLeft.apply(this,arguments),this.FPopup&&null!=(t=this.FPopupElement)&&t.style.setProperty("left",pas.SysUtils.IntToStr(e)+"px")},this.SetTop=function(e){var t=null;pas["WEBLib.Controls"].TControl.SetTop.apply(this,arguments),this.FPopup&&null!=(t=this.FPopupElement)&&t.style.setProperty("top",pas.SysUtils.IntToStr(e)+"px")},this.ClearMethodPointers=function(){pas["WEBLib.Controls"].TControl.ClearMethodPointers.call(this),this.FLoadedPtr=null,this.FDOMContentLoadedPtr=null,this.FUnloadPtr=null,this.FBeforeUnloadPtr=null,this.FResizePtr=null,this.FScrollPtr=null,this.FDocMouseUpPtr=null,this.FDocMouseMovePtr=null,this.FTitleDownPtr=null,this.FDoClickPtr=null,this.FKeyDownPtr$1=null,this.FOrientationChangePtr=null,this.FHashChangePtr=null},this.GetMethodPointers=function(){pas["WEBLib.Controls"].TControl.GetMethodPointers.call(this),null===this.FLoadedPtr&&(this.FLoadedPtr=rtl.createCallback(this,"HandleLoaded"),this.FDOMContentLoadedPtr=rtl.createCallback(this,"HandleDOMContentLoaded"),this.FUnloadPtr=rtl.createCallback(this,"HandleUnload"),this.FBeforeUnloadPtr=rtl.createCallback(this,"HandleBeforeUnload"),this.FResizePtr=rtl.createCallback(this,"HandleResize"),this.FScrollPtr=rtl.createCallback(this,"HandleScroll"),this.FDocMouseUpPtr=rtl.createCallback(this,"HandleDocMouseUp"),this.FDocMouseMovePtr=rtl.createCallback(this,"HandleDocMouseMove"),this.FTitleDownPtr=rtl.createCallback(this,"HandleTitleDown"),this.FDoClickPtr=rtl.createCallback(this,"HandleDoClick$1"),this.FKeyDownPtr$1=rtl.createCallback(this,"HandleKeyDown"),this.FOrientationChangePtr=rtl.createCallback(this,"HandleOrientationChange"),this.FHashChangePtr=rtl.createCallback(this,"HandleHashChange"))},this.VisibleChanged=function(){var e=!1;pas["WEBLib.Controls"].TControl.VisibleChanged.call(this),null!=this.FLayer$1?this.FVisible?this.FLayer$1.style.setProperty("display",""):this.FLayer$1.style.setProperty("display","none"):(e=pas.SysUtils.LowerCase(this.GetID())===pas["WEBLib.WebTools"].cBodyTag,null==this.GetContainer()||""===this.FFormContainer||e||(this.FVisible?this.GetContainer().style.setProperty("display",""):this.GetContainer().style.setProperty("display","none")))},this.Resize$1=function(){var e=0,t=0,i=0,a=0,n=null;if(!(3 in this.FComponentState)&&(this.FIsResizing$1=!0,this.FPopup&&null!=this.FPopupElement?(n=this.FPopupElement.getBoundingClientRect(),i=Math.round(n.right-n.left-2),this.FBorder in rtl.createSet(3,4)?(t=this.GetCaptionHeight(),a=Math.round(n.bottom-n.top-t-2)):a=Math.round(n.bottom-n.top-2)):(i=window.innerWidth,a=window.innerHeight),this.UpdateControlSize(i,a),pas["WEBLib.Controls"].IsAndroid()&&"INPUT"===document.activeElement.tagName||this.AlignControl(this),this.DoResize(),this.FIsResizing$1=!1,!this.IsUpdating())){-1===this.FOrigRect.Left&&-1===this.FOrigRect.Top&&this.InitAnchoring();for(var s=0,o=this.GetControlsCount()-1;s<=o;s++)e=s,this.GetControls(e).UpdateAnchoring()}},this.CreateControl=function(){(this.FVisible||this.FPopup)&&(pas["WEBLib.Controls"].TControl.CreateControl.call(this),this.UpdateSize())},this.DoClose=function(e){null!=this.FModalProc&&0!==e.get()&&(this.FModalProc(this.FModalResult),this.FModalProc=null)},this.BindEvents=function(){var t="";pas["WEBLib.Controls"].TControl.BindEvents.call(this),"loading"!==document.readyState&&null!=this.FOnDOMContentLoaded&&this.FOnDOMContentLoaded(this),window.addEventListener("resize",this.FResizePtr),window.addEventListener("load",this.FLoadedPtr),window.addEventListener("DOMContentLoaded",this.FDOMContentLoadedPtr),document.addEventListener("scroll",this.FScrollPtr),window.addEventListener("unload",this.FUnloadPtr),window.addEventListener("beforeunload",this.FBeforeUnloadPtr),window.addEventListener("keydown",this.FKeyDownPtr$1),window.addEventListener("orientationchange",this.FOrientationChangePtr),window.addEventListener("hashchange",this.FHashChangePtr),null!=pas.Classes.GetClass(this.$classname)&&!this.FPopup&&e.Application.FRouting&&(t=this.$classname,pas.System.Delete({get:function(){return t},set:function(e){t=e}},1,1),e.LastHash=t,window.location.hash=t)},this.UnbindEvents=function(){pas["WEBLib.Controls"].TControl.UnbindEvents.call(this),null!=this.FLayer$1&&0===this.FPopupClose&&this.FLayer$1.removeEventListener("click",this.FDoClickPtr),null!=this.FResizeObserver&&this.FResizeObserver.disconnect(),window.removeEventListener("resize",this.FResizePtr),window.removeEventListener("load",this.FLoadedPtr),window.removeEventListener("DOMContentLoaded",this.FDOMContentLoadedPtr),document.removeEventListener("scroll",this.FScrollPtr),window.removeEventListener("unload",this.FUnloadPtr),window.removeEventListener("beforeunload",this.FBeforeUnloadPtr),window.removeEventListener("keydown",this.FKeyDownPtr$1),window.removeEventListener("orientationchange",this.FOrientationChangePtr),window.removeEventListener("hashchange",this.FHashChangePtr)},this.DoCreate=function(){this.BeginUpdate(),this.LoadDFMValues(),this.Loaded(),null!=this.FOnCreate&&this.FOnCreate(this),this.FCreating=!1,this.EndUpdate(),this.UpdateChildren(this),this.Realign(),this.DoResize()},this.Realign=function(){var e=null,t=null,i=pas.Types.TRect.$new();""!==this.FFormContainer&&0!==this.FAlign&&null!=(e=document.getElementById(this.FFormContainer))&&(0===(t=e.getBoundingClientRect()).width&&0===t.height&&"absolute"===e.style.getPropertyValue("position")?i.$assign(pas["WEBLib.Controls"].GetHTMLElementAbsoluteRect(e)):i.$assign(pas.Types.Rect(Math.round(t.left),Math.round(t.top),Math.round(t.right),Math.round(t.bottom))),this.SetBoundsInt(i.Left,i.Top,i.Right-i.Left,i.Bottom-i.Top)),pas["WEBLib.Controls"].TControl.Realign.call(this)},this.DoResize=function(){var e,t;e=this.GetWidth(),t=this.GetHeight(),e===this.FOldWidth&&t===this.FOldHeight||(this.FOldWidth=e,this.FOldHeight=t,null!=this.FOnResize&&this.FOnResize(this))},this.DoShow=function(){null==this.FOnShow||this.FShown||(this.FShown=!0,this.FOnShow(this))},this.HandleDoClick$1=function(e){return e.stopPropagation(),0===this.FPopupClose&&this.Close(),!0,!0},this.HandleKeyDown=function(e){var t,i=!1;return t=this.GetKeyCode(e.key,!0),pas.System.Assigned(t)?(27===t&&!(4 in this.FComponentState)&&this.FPopup&&this.Close(),i=!0):i},this.HandleOrientationChange=function(e){var t=0;(this.Resize$1(),this.Realign(),!0,null!=this.FOnOrientationChange)&&(t=window.matchMedia("(orientation: portrait)").matches?1:0,this.FOnOrientationChange(this,t));return null!=this.FOnResize&&this.FOnResize(this),!0},this.KeyPreview=function(t,i){var a=0,n=0,s=0,o=0,r=0;n=-1,s=65535;for(var l=0,h=this.GetControlsCount()-1;l<=h;l++)a=l,!this.GetControls(a).FVisible&&this.GetControls(a).FEnabled||(this.GetControls(a).FTabOrdern&&(n=this.GetControls(a).FTabOrder,o=a),13!==t.get()&&27!==t.get()||this.GetControls(a).HandleKeyPreview(t.get()));e.Application.FMainForm!==this&&(9===t.get()&&!(0 in i)&&o=0&&r!==o&&this.GetControls(o).Focused()&&(this.GetControls(r).SetFocus(),t.set(0)),9===t.get()&&0 in i&&r>=0&&owindow.innerWidth&&(e=window.innerWidth)):this.FPopup?e=pas["WEBLib.Controls"].TControl.GetWidth.call(this):0===(e=Math.round(this.GetElementHandle().offsetWidth))&&(e=""!==this.FFormContainer?pas["WEBLib.Controls"].TControl.GetWidth.call(this):window.innerWidth),e)},this.GetHeight=function(){var e=0,t=0,i="",a=null,n=null;return""!==this.FFormElement&&null!=(a=document.getElementById(this.FFormElement))?(n=a.getBoundingClientRect(),e=Math.round(n.bottom-n.top)):(this.GetElementHandle()===document.body?(i=window.getComputedStyle(this.GetElementHandle()).getPropertyValue("margin-top"),i=pas.System.Copy(i,1,i.length-2),t=Math.round(pas.SysUtils.StrToFloat$1(i,pas.SysUtils.TFormatSettings.Invariant())-2),n=document.documentElement.getBoundingClientRect(),(e=Math.round(n.height))>window.innerHeight&&(e=window.innerHeight-Math.max(0,t))):this.FPopup?e=pas["WEBLib.Controls"].TControl.GetHeight.call(this):0===(e=Math.round(this.GetElementHandle().offsetHeight))&&(e=""!==this.FFormContainer?pas["WEBLib.Controls"].TControl.GetHeight.call(this):window.innerHeight),e)},this.GetLeft=function(){var e=0,t=null,i=null;return this.FPopup?e=pas["WEBLib.Controls"].TControl.GetLeft.call(this):""!==this.FFormElement?null!=(t=document.getElementById(this.FFormElement))&&(i=t.getBoundingClientRect(),e=Math.round(i.left)):(t=null,""!==this.FFormContainer&&(t=document.getElementById(this.FFormContainer)),null==t&&(t=this.GetElementHandle()),e=Math.round(t.offsetLeft)),e},this.GetTop=function(){var e=0,t=null,i=null;return this.FPopup?e=pas["WEBLib.Controls"].TControl.GetTop.call(this):""!==this.FFormElement?null!=(t=document.getElementById(this.FFormElement))&&(i=t.getBoundingClientRect(),e=Math.round(i.top)):(t=null,""!==this.FFormContainer&&(t=document.getElementById(this.FFormContainer)),null==t&&(t=this.GetElementHandle()),e=Math.round(t.offsetTop)),e},this.GetClientRect=function(){var e=pas.Types.TRect.$new();return e.$assign(pas["WEBLib.Controls"].TControl.GetClientRect.call(this)),e},this.CreateElement=function(){var t=null,i=null,a=null;return this.FPopup||null==this.FormContainerElement()?(t=document.createElement("DIV"),this.FLayer$1=this.CreateLayer(),document.body.appendChild(this.FLayer$1),i=this.FLayer$1,0===this.FPopupClose&&(this.GetMethodPointers(),i.addEventListener("click",this.FDoClickPtr)),i.style.setProperty(pas["WEBLib.Controls"].CSSZIndex,e.Application.MaxZIndexStr()),2===this.FBorder&&(t.style.setProperty("resize","both"),t.style.setProperty("overflow","auto")),this.FHasCaption=!1,this.FBorder in rtl.createSet(2,3,4)&&(a=this.CreateCaption(),t.appendChild(a)),t):t=this.FormContainerElement()},this.UpdateElement=function(){var e="",t=null;this.FCreating||(pas["WEBLib.Controls"].TControl.UpdateElement.call(this),this.IsUpdating()||(null==this.GetElementHandle()&&null==this.GetContainer()||""!==this.FCaption&&(this.FPopup?null!=this.FCaptionElement&&(null!=(t=this.FCaptionElement.childNodes.item(0))&&(t.nodeValue=this.FCaption),this.FShowClose&&null==this.FCaptionCloseElement&&(this.FCaptionCloseElement=document.createElement("SPAN"),this.FCaptionCloseElement.style.setProperty("float","right"),this.FCaptionCloseElement.style.setProperty("cursor","default"),this.FCaptionCloseElement.style.setProperty("margin-right","8px"),this.FCaptionCloseElement.innerHTML="✖",this.FCaptionElement.appendChild(this.FCaptionCloseElement),this.FCaptionCloseElement.addEventListener("click",rtl.createSafeCallback(this,"HandleCloseClick"))),pas["WEBLib.Controls"].SetHTMLElementFont(this.FCaptionElement,this.FFont,!(""===this.FElementCaptionClassName&&0===this.FElementFont))):window.document.title=this.FCaption),null!=this.GetContainer()&&(e=pas["WEBLib.Graphics"].ColorToHTML(this.FColor),null!=this.GetContainer()&&(-1===this.FColor||16777215===this.FColor||this.FPopup||""!==this.FElementClassName||this.GetContainer().style.setProperty(pas["WEBLib.Controls"].CSSBackground,e),(""!==this.FElementClassName||-1===this.FColor||16777215===this.FColor&&!this.FPopup)&&this.GetContainer().style.removeProperty(pas["WEBLib.Controls"].CSSBackground),""!==this.FElementClassName||this.FPopup||document.documentElement.style.setProperty("height","100%"),pas["WEBLib.Controls"].SetHTMLElementFont(this.GetContainer(),this.FFont,!(""===this.FElementClassName&&0===this.FElementFont))),this.FPopup?(null==this.FPopupElement&&(this.FPopupElement=this.GetContainer()),""!==this.FElementPopupClassName?(this.GetContainer().style.removeProperty("border"),this.FPopupElement.setAttribute("class",this.FElementPopupClassName)):(this.FShadow?this.FPopupElement.style.setProperty("box-shadow","3px 3px 3px silver"):this.FPopupElement.style.removeProperty("box-shadow"),this.FPopupElement.style.setProperty("border","1px solid gray"))):this.GetContainer().style.removeProperty("box-shadow"))))},this.ContainerElement=function(){return this.FormContainerElement()},this.FormContainerElement=function(){var e=null;return 4 in this.FComponentState&&null!=this.FDesignContainer&&(e=this.FDesignContainer),""!==this.FFormContainer?null==(e=document.getElementById(this.FFormContainer))&&(e=document.body):e=document.body,e},this.GetElementBindHandle=function(){return 4 in this.FComponentState||""!==this.FFormContainer?window:this.FPopup?pas["WEBLib.Controls"].TControl.GetElementBindHandle.call(this):window},this.GetElementHandle=function(){return this.FPopup?pas["WEBLib.Controls"].TControl.GetElementHandle.call(this):this.FormContainerElement()},this.SetElementClassName=function(e){pas["WEBLib.Controls"].TControl.SetElementClassName.apply(this,arguments),this.FPopup&&null!=this.FPopupElement&&this.FPopupElement.setAttribute("class",e)},this.CloseQuery=function(){var e=!1;return e=!0,null!=this.FOnCloseQuery&&this.FOnCloseQuery(this,{get:function(){return e},set:function(t){e=t}}),e},this.LoadDFMValues=function(){},this.Init=function(){},this.CreateLayer=function(){var t=null;return(t=document.createElement("SPAN")).style.setProperty("top","0"),t.style.setProperty("left","0"),t.style.setProperty("right","0"),t.style.setProperty("bottom","0"),t.style.setProperty("webkit-user-select","none"),t.style.setProperty("moz-user-select","none"),t.style.setProperty("khtml-user-select","none"),t.style.setProperty("ms-user-select","none"),t.style.setProperty("user-select","none"),t.style.setProperty("position","absolute"),t.style.setProperty("z-index",e.Application.MaxZIndexStr()),t},this.CreateCaption=function(){var t;return t=pas.SysUtils.IntToStr(e.Application.FFormCaptionHeight),this.FCaptionElement=document.createElement("DIV"),this.FCaptionElement.innerHTML=this.FCaption,this.FCaptionElement.style.setProperty(pas["WEBLib.Controls"].CSSBackground,pas["WEBLib.Graphics"].ColorToHTML(e.Application.FThemeColor)),this.FCaptionElement.style.setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(e.Application.FThemeTextColor)),this.FCaptionElement.style.setProperty("cursor","move"),this.FCaptionElement.style.setProperty("height",t+"px"),this.FCaptionElement.style.setProperty("line-height",t+"px"),this.FCaptionElement.style.setProperty("border-bottom","1px solid black"),this.FCaptionElement.style.setProperty("padding-left","4px"),this.FCaptionElement.style.setProperty("-moz-user-select","none"),this.FCaptionElement.style.setProperty("-webkit-user-select","none"),this.FCaptionElement.style.setProperty("-ms-user-select","none"),this.FCaptionElement.style.setProperty("user-select","none"),this.FCaptionElement.style.setProperty("-o-user-select","none"),""!==this.FElementCaptionClassName&&this.FCaptionElement.setAttribute("class",this.FElementCaptionClassName),pas["WEBLib.Controls"].SetHTMLElementFont(this.FCaptionElement,this.FFont,!(""===this.FElementCaptionClassName&&0===this.FElementFont)),null==this.FTitleDownPtr&&this.GetMethodPointers(),this.FCaptionElement.innerHTML=this.FCaption,this.FCaptionElement.addEventListener("mousedown",this.FTitleDownPtr),this.FHasCaption=!0,this.FCaptionElement},this.GetCaptionHeight=function(){var e=0,t=null;return e=0,null!=this.FCaptionElement&&this.FBorder in rtl.createSet(3,4)&&(t=this.FCaptionElement.getBoundingClientRect(),e=Math.round(t.bottom-t.top)),e},this.SetColorScheme=function(t){var i="";if(e.Application.FThemed){var a=t;2===a?(this.SetColor(2105636),i="label,option,td,table,ul,li {background-color: #202124; color: #BEC1C6;}\r\nbody,input,textarea,select,fieldset {background-color: #202124; color: #BEC1C6; border: 1px solid gray;}\r\ninput:focus, textarea:focus, select:focus, span:focus { border: 1px solid silver; outline: none !important;}",this.AddCSS("appscheme",i)):1===a&&(this.SetColor(16777215),this.RemoveCSS("appscheme"))}},this.GetHTMLFileName=function(){return this.$module.$name+e.Application.GetFormExtension()},this.LoadedDone=function(){e.Application.TriggerNotification()},this.Loaded=function(){pas["WEBLib.Controls"].TControl.Loaded.call(this),this.LoadedDone()},this.ColorChanging=function(){pas["WEBLib.Controls"].TControl.ColorChanging.call(this),null!=this.GetContainer()&&this.GetContainer().style.setProperty(pas["WEBLib.Controls"].CSSBackground,pas["WEBLib.Graphics"].ColorToHTML(this.FColor))},this.CreateInitialize=function(){pas["WEBLib.Controls"].TControl.CreateInitialize.call(this),this.FAllowTouch=!0,this.FModalResult=0,this.FFormStyle=0,this.FBorder=2,this.FShadow=!0,this.FShowClose=!0,this.FTimerID=-1,this.FCaptionElement=null,this.FColor=16777215,window.addEventListener("load",this.FLoadedPtr)},this.Create$2=function(e){return this.FNoHTML=!1,this.FCreating=!0,this.FFormContainer=e,""===e?pas["WEBLib.Controls"].TControl.Create$2.call(this,pas["WEBLib.WebTools"].cBodyTag):pas["WEBLib.Controls"].TControl.Create$2.call(this,e),this.FFormElement="",this.FModalResult=0,this.FFormStyle=0,this.DoCreate(),this},this.Create$5=function(e,t){return this.FCreating=!0,this.FFormContainer=e,pas["WEBLib.Controls"].TControl.Create$2.call(this,e),t.set(this),this.FFormElement="",this.FModalResult=0,this.FFormStyle=0,this.DoCreate(),this},this.Create$1=function(e){return this.FNoHTML=!1,this.FCreating=!0,this.FResizeObserver=null,pas["WEBLib.Controls"].TControl.Create$1.apply(this,arguments),this.FBorder=1,this.FFormFileName="",this.FPopupMode=0,this.FPopupClose=0,this.FPopup=!0,this.FPosition=4,this.FPopupOpacity=1,this},this.Destroy=function(){this.FVisible&&this.Close(),null!=this.FOnDestroy&&this.FOnDestroy(this),pas["WEBLib.Controls"].TControl.Destroy.call(this),null!=this.FLayer$1&&(this.FormContainerElement()===this.FLayer$1.parentNode&&this.FormContainerElement().removeChild(this.FLayer$1),this.FLayer$1=null)},this.Close=function(){var i=0,a=null;this.CloseQuery()&&(this.UnbindEvents(),i=1,-1!==this.FTimerID&&(window.clearInterval(this.FTimerID),this.FTimerID=-1),null!=this.FOnClose&&this.FOnClose(this,{get:function(){return i},set:function(e){i=e}}),0!==i&&(null!=this.FLayer$1&&(this.GetContainer().parentNode===this.FLayer$1?this.FLayer$1.removeChild(this.GetContainer()):this.GetContainer().parentNode.parentNode===this.FLayer$1&&this.FLayer$1.removeChild(this.GetContainer().parentNode),this.FContainer=null,this.FormContainerElement()===this.FLayer$1.parentNode&&(this.FormContainerElement().removeChild(this.FLayer$1),e.Application.ChangeMaxZIndex(-1)),this.FLayer$1=null),""===this.FFormFileName?""!==this.FFormElement&&null!=this.GetContainer()?(this.GetContainer().innerHTML="",this.FContainer=null):null!=this.GetContainer()&&(this.FormContainerElement()===this.GetContainer().parentNode&&this.FormContainerElement().removeChild(this.GetContainer()),this.FContainer=null):""!==this.FFormElement&&(this.GetContainer().innerHTML="",this.FContainer=null),this.FFormElement!==this.FFormContainer&&""!==this.FFormElement&&null!=(a=document.getElementById(this.FFormElement))&&(a.innerHTML=""),this.DoClose({get:function(){return i},set:function(e){i=e}}),2!==i||3 in this.FComponentState||(this.SetVisible(!1),t.ReleaseForm(this),e.Application.FMainForm===this&&(e.Application.FMainForm=null)),e.Application.FActiveForm=this.FPrevActiveForm,this.SetVisible(!1)))},this.IsMiletus=function(){var e=!1,t=null;t=this.$class.ClassType(),e=!1;do{if(null!=(t=t.$ancestor)&&"TMiletusForm"===t.$classname){e=!0;break}}while(null!=t&&"TForm"!==t.$classname);return e},this.AddCSS=function(e,t){var i,a,n;i=e,a=t,(n=document.getElementById(i))?n.innerHTML=a:((n=document.createElement("style")).type="text/css",n.id=i,n.innerHTML=a,document.getElementsByTagName("head")[0].appendChild(n))},this.RemoveCSS=function(e){var t;null!=(t=document.getElementById(e))&&document.head.removeChild(t)};var i=this.$rtti;i.addMethod("Create$2",2,[["id",rtl.string]]),i.addMethod("Create$5",2,[["id",rtl.string],["AReference",null,1]]),i.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),rtl.createClass(this,"TForm",this.TCustomForm,(function(){var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),t.addProperty("CSSLibrary",0,e.$rtti.TCSSLibrary,"FCSSLibrary","FCSSLibrary",{Default:e.TCSSLibrary.cssNone}),t.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("FormContainer",2,pas["WEBLib.Controls"].$rtti.TElementID,"FFormContainer","SetFormContainer"),t.addProperty("FormStyle",3,e.$rtti.TFormStyle,"GetFormStyle","SetFormStyle"),t.addProperty("Menu",0,pas["WEBLib.Controls"].$rtti.TCustomControl,"FMenu","FMenu"),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("Shadow",2,rtl.boolean,"FShadow","SetShadow",{Default:!0}),t.addProperty("ShowClose",0,rtl.boolean,"FShowClose","FShowClose",{Default:!0}),t.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),t.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),t.addProperty("OnBeforeUnload",0,e.$rtti.TBeforeUnloadEvent,"FOnBeforeUnload","FOnBeforeUnload"),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnClose",0,e.$rtti.TCloseEvent,"FOnClose","FOnClose"),t.addProperty("OnCloseQuery",0,e.$rtti.TCloseQueryEvent,"FOnCloseQuery","FOnCloseQuery"),t.addProperty("OnCreate",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnCreate","FOnCreate"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnDeactivate",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDeactivate","FOnDeactivate"),t.addProperty("OnDestroy",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDestroy","FOnDestroy"),t.addProperty("OnDOMContentLoaded",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDOMContentLoaded","FOnDOMContentLoaded"),t.addProperty("OnHashChange",0,e.$rtti.THashChangeEvent,"FOnHashChange","FOnHashChange"),t.addProperty("OnResize",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnResize","FOnResize"),t.addProperty("OnShow",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnShow","FOnShow"),t.addProperty("OnScroll",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnScroll","FOnScroll"),t.addProperty("OnOrientationChange",0,e.$rtti.TOrientationChangeEvent,"FOnOrientationChange","FOnOrientationChange"),t.addProperty("OnPaint",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnPaint","FOnPaint"),t.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),t.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),t.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),t.addProperty("OnUnload",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnUnload","FOnUnload")})),rtl.createClass(this,"TCustomFrame",pas["WEBLib.Controls"].TCustomHTMLDiv,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomHTMLDiv.$init.call(this),this.FAutoScroll=!1,this.FAutoSize=!1,this.FBiDiMode$1=0,this.FConstraints=null,this.FCtl3D$1=!1,this.FDockSite=!1,this.FDragCursor=0,this.FDragKind=0,this.FDragMode$1=0,this.FOnAlignInsertBefore=null,this.FOnAlignPosition=null,this.FOnCanResize=null,this.FOnConstrainedResize=null,this.FOnContextPopup=null,this.FOnDockDrop=null,this.FOnDockOver=null,this.FOnEndDock=null,this.FOnGesture=null,this.FOnGetSiteInfo=null,this.FOnMouseActivate=null,this.FOnMouseWheelDown$1=null,this.FOnMouseWheelUp$1=null,this.FOnStartDock=null,this.FOnUnDock=null,this.FPadding=null,this.FParentBackground=!1,this.FParentCtl3D$1=!1,this.FPopupMenu=null},this.$final=function(){this.FConstraints=void 0,this.FOnAlignInsertBefore=void 0,this.FOnAlignPosition=void 0,this.FOnCanResize=void 0,this.FOnConstrainedResize=void 0,this.FOnContextPopup=void 0,this.FOnDockDrop=void 0,this.FOnDockOver=void 0,this.FOnEndDock=void 0,this.FOnGesture=void 0,this.FOnGetSiteInfo=void 0,this.FOnMouseActivate=void 0,this.FOnMouseWheelDown$1=void 0,this.FOnMouseWheelUp$1=void 0,this.FOnStartDock=void 0,this.FOnUnDock=void 0,this.FPadding=void 0,this.FPopupMenu=void 0,pas["WEBLib.Controls"].TCustomHTMLDiv.$final.call(this)};this.LoadHTMLFile=function(e){var t,i=null;""!==(t=this.$class.GetHTMLFileName())&&((i=new XMLHttpRequest).addEventListener("load",rtl.createSafeCallback(null,(function(t){var i;return null!==t&&(i=t.target.responseText,document.getElementById(e).innerHTML=i,!0,!0)}))),i.open("GET",t),i.send())},this.SetConstraints=function(e){this.FConstraints.Assign(e)},this.SetPopupMenu=function(e){this.FPopupMenu=e},this.SetPadding=function(e){this.FPadding.Assign(e)},this.GetHTMLFileName=function(){return this.$module.$name+e.Application.GetFormExtension()},this.LoadDFMValues=function(){},this.UpdateElement=function(){var e;pas["WEBLib.Controls"].TControl.UpdateElement.call(this),e=this.FColor in rtl.createSet(15790320,-1,16777215,16711422),null!=this.GetElementHandle()&&!this.IsUpdating()&&4 in this.FComponentState&&e&&this.GetElementHandle().style.setProperty("background-color",pas["WEBLib.Graphics"].ColorToHTML(15790320))},this.Create$2=function(e){return pas["WEBLib.Controls"].TControl.Create$2.call(this,e),this.FPadding=pas["WEBLib.Controls"].TPadding.$create("Create$1"),this.LoadHTMLFile(e),this},this.Create$1=function(t){return pas["WEBLib.Controls"].TControl.Create$1.call(this,t),this.FPadding=pas["WEBLib.Controls"].TPadding.$create("Create$1"),this.FConstraints=e.TSizeConstraints.$create("Create$1",[this]),this},this.Destroy=function(){rtl.free(this,"FConstraints"),rtl.free(this,"FPadding"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)},this.LoadFromForm=function(){this.LoadDFMValues()};var t=this.$rtti;t.addMethod("Create$2",2,[["AId",rtl.string]]),t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),rtl.createClass(this,"TFrame",this.TCustomFrame,(function(){var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("AutoScroll",0,rtl.boolean,"FAutoScroll","FAutoScroll",{Default:!1}),t.addProperty("AutoSize",0,rtl.boolean,"FAutoSize","FAutoSize",{Default:!1}),t.addProperty("BiDiMode",4,pas["WEBLib.Controls"].$rtti.TBiDiMode,"FBiDiMode$1","FBiDiMode$1"),t.addProperty("Constraints",2,e.$rtti.TSizeConstraints,"FConstraints","SetConstraints"),t.addProperty("DockSite",0,rtl.boolean,"FDockSite","FDockSite",{Default:!1}),t.addProperty("DoubleBuffered",0,rtl.boolean,"FDoubleBuffered","FDoubleBuffered",{Default:!1}),t.addProperty("DragCursor",0,pas["WEBLib.Controls"].$rtti.TCursor,"FDragCursor","FDragCursor",{Default:12}),t.addProperty("DragKind",0,pas["WEBLib.Controls"].$rtti.TDragKind,"FDragKind","FDragKind",{Default:pas["WEBLib.Controls"].TDragKind.dkDrag}),t.addProperty("DragMode",0,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode$1","FDragMode$1",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),t.addProperty("Ctl3D",4,rtl.boolean,"FCtl3D$1","FCtl3D$1"),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("Padding",2,pas["WEBLib.Controls"].$rtti.TPadding,"FPadding","SetPadding"),t.addProperty("ParentBackground",0,rtl.boolean,"FParentBackground","FParentBackground",{Default:!0}),t.addProperty("ParentBiDiMode",0,rtl.boolean,"FParentBiDiMode","FParentBiDiMode",{Default:!0}),t.addProperty("ParentColor",2,rtl.boolean,"FParentColor","SetParentColor",{Default:!1}),t.addProperty("ParentCtl3D",0,rtl.boolean,"FParentCtl3D$1","FParentCtl3D$1",{Default:!0}),t.addProperty("ParentDoubleBuffered",0,rtl.boolean,"FParentDoubleBuffered","FParentDoubleBuffered",{Default:!0}),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("ParentShowHint",0,rtl.boolean,"FParentShowHint","FParentShowHint"),t.addProperty("PopupMenu",2,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","SetPopupMenu"),t.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),t.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),t.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("OnAlignInsertBefore",0,e.$rtti.TAlignInsertBeforeEvent,"FOnAlignInsertBefore","FOnAlignInsertBefore"),t.addProperty("OnAlignPosition",0,e.$rtti.TAlignPositionEvent,"FOnAlignPosition","FOnAlignPosition"),t.addProperty("OnCanResize",0,e.$rtti.TCanResizeEvent,"FOnCanResize","FOnCanResize"),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnConstrainedResize",0,e.$rtti.TConstrainedResizeEvent,"FOnConstrainedResize","FOnConstrainedResize"),t.addProperty("OnContextPopup",0,e.$rtti.TContextPopupEvent,"FOnContextPopup","FOnContextPopup"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnDockDrop",0,e.$rtti.TDockDropEvent,"FOnDockDrop","FOnDockDrop"),t.addProperty("OnDockOver",0,e.$rtti.TDockOverEvent,"FOnDockOver","FOnDockOver"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDock",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FOnEndDock","FOnEndDock"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnEnter","FOnEnter"),t.addProperty("OnExit",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnExit","FOnExit"),t.addProperty("OnGesture",0,e.$rtti.TGestureEvent,"FOnGesture","FOnGesture"),t.addProperty("OnGetSiteInfo",0,e.$rtti.TGetSiteInfoEvent,"FOnGetSiteInfo","FOnGetSiteInfo"),t.addProperty("OnMouseActivate",0,e.$rtti.TMouseActivateEvent,"FOnMouseActivate","FOnMouseActivate"),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),t.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnMouseWheel",0,pas["WEBLib.Controls"].$rtti.TMouseWheelEvent,"FOnMouseWheel","FOnMouseWheel"),t.addProperty("OnMouseWheelDown",0,e.$rtti.TMouseWheelUpDownEvent,"FOnMouseWheelDown$1","FOnMouseWheelDown$1"),t.addProperty("OnMouseWheelUp",0,e.$rtti.TMouseWheelUpDownEvent,"FOnMouseWheelUp$1","FOnMouseWheelUp$1"),t.addProperty("OnResize",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnResize","FOnResize"),t.addProperty("OnStartDock",0,e.$rtti.TStartDockEvent,"FOnStartDock","FOnStartDock"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag"),t.addProperty("OnUnDock",0,e.$rtti.TUnDockEvent,"FOnUnDock","FOnUnDock")})),rtl.recNewT(this,"TApplicationError",(function(){this.AMessage="",this.AFile="",this.ALineNumber=0,this.AColNumber=0,this.AStack="",this.AError=null,this.$eq=function(e){return this.AMessage===e.AMessage&&this.AFile===e.AFile&&this.ALineNumber===e.ALineNumber&&this.AColNumber===e.AColNumber&&this.AStack===e.AStack&&this.AError===e.AError},this.$assign=function(e){return this.AMessage=e.AMessage,this.AFile=e.AFile,this.ALineNumber=e.ALineNumber,this.AColNumber=e.AColNumber,this.AStack=e.AStack,this.AError=e.AError,this}})),this.THintPosition={0:"hpLeft",hpLeft:0,1:"hpTop",hpTop:1,2:"hpRight",hpRight:2,3:"hpBottom",hpBottom:3},this.TOnlineStatus={0:"osOnline",osOnline:0,1:"osOffline",osOffline:1},rtl.createClass(this,"TApplication",pas["WEBLib.Controls"].TControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TControl.$init.call(this),this.FAppContainer="",this.FMainFormOnTaskBar=!1,this.FCanCreateForm=!1,this.FAppInitializing=!1,this.FLastReq=null,this.FFormCaptionHeight=0,this.FActiveForm=null,this.FMainForm=null,this.FInitFormClassName="",this.FFormStack=null,this.FParameters=null,this.FIsRedirect=!1,this.FLanguage=0,this.FOnError=null,this.FOnHashChange=null,this.FAutoFormRoute=!1,this.FErrorType=0,this.FOnOnlineChange=null,this.FOnActivate=null,this.FThemeTextColor=0,this.FThemeColor=0,this.FThemed=!1,this.FThemeButtonClassName="",this.FOnOAuthToken=null,this.FOnOAuthCallBack=null,this.FOnPopState=null,this.FMaxZIndex=0,this.FHandleOAuth=!1,this.FHintPause=0,this.FHintHidePause=0,this.FHintPosition=0,this.FHintClassName="",this.FOnExit$1=null,this.FOnException=null,this.FOnAutoCreateForm=null,this.FRouting=!1,this.FNotifyCount=0},this.$final=function(){this.FLastReq=void 0,this.FActiveForm=void 0,this.FMainForm=void 0,this.FFormStack=void 0,this.FParameters=void 0,this.FOnError=void 0,this.FOnHashChange=void 0,this.FOnOnlineChange=void 0,this.FOnActivate=void 0,this.FOnOAuthToken=void 0,this.FOnOAuthCallBack=void 0,this.FOnPopState=void 0,this.FOnExit$1=void 0,this.FOnException=void 0,this.FOnAutoCreateForm=void 0,pas["WEBLib.Controls"].TControl.$final.call(this)},this.DoHandleError=function(t){var i,a=!1,n=e.TApplicationError.$new(),s=null,o=null,r=null,l="",h=!1,c=void 0,d=null;if(h=!0,null==t.message&&(h=!1),"ResizeObserver loop limit exceeded"===t.message)return a;if("ResizeObserver loop completed with undelivered notifications."===t.message)return a;if(!h)return n.AMessage="Undefined JavaScript exception",n.AFile="",n.ALineNumber=0,n.AColNumber=0,n.AError=null,null!=this.FOnError&&this.FOnError(this,e.TApplicationError.$clone(n),{get:function(){return a},set:function(e){a=e}}),a;if(n.AMessage=t.message,n.AFile=t.filename,n.ALineNumber=t.lineno,n.AColNumber=t.colno,n.AError=t.error,n.AStack="",l="",c=null,null!=t.error){t.error.stack&&(n.AStack=t.error.stack),t.error.fMessage&&(n.AMessage=t.error.fMessage),t.error.hasOwnProperty("FJSError")&&(c=t.error.FJSError),l=function(e){var t="";for(var i in e)e.hasOwnProperty(i)&&(t+=i+"::"+e[i]+"\n");return t}(t.error)}pas.System.Assigned(c)&&(d=t.error,null!=this.FOnException&&this.FOnException(this,d)),a=!1,i="ERROR
"+n.AMessage+" | "+l+n.AStack+"
at "+n.AFile+" ["+pas.SysUtils.IntToStr(n.ALineNumber)+":"+pas.SysUtils.IntToStr(n.AColNumber)+"]";var m=this.FErrorType;return 3===m?null!=(s=document.getElementById("tmserrormessage"))?rtl.asExt(s.firstChild,HTMLElement).innerHTML=i:((s=document.createElement("DIV")).setAttribute("id","tmserrormessage"),s.style.setProperty("position","absolute"),s.style.setProperty("font-family","Courier"),s.style.setProperty("font-size","8pt"),s.style.setProperty("bottom","0"),s.style.setProperty("width","100%"),s.style.setProperty("height","100px"),s.style.setProperty("background","#ff0000"),s.style.setProperty("color","#ffffff"),document.body.style.setProperty("padding","0"),document.body.style.setProperty("margin","0"),(o=document.createElement("SPAN")).style.setProperty("margin-left","4px"),o.style.setProperty("float","left"),o.style.setProperty("overflow","hidden"),o.style.setProperty("display","block"),o.innerHTML=i,s.appendChild(o),(r=document.createElement("SPAN")).style.setProperty("font-family","Courier"),r.style.setProperty("font-size","8pt"),r.style.setProperty("font-weight","bold"),r.style.setProperty("position","absolute"),r.style.setProperty("width","20px"),r.style.setProperty("vertical-align","top"),r.style.setProperty("cursor","pointer"),r.style.setProperty("text-align","right"),r.style.setProperty("right","4px"),r.style.setProperty("display","block"),r.innerHTML="X",r.onclick=rtl.createSafeCallback(this,"DoErrorClose"),s.appendChild(r),document.body.appendChild(s)):2===m?window.alert(i):1===m&&(this.AddControlLink("googlematerial","https://fonts.googleapis.com/icon?family=Material+Icons"),pas["WEBLib.Dialogs"].MessageDlg(i,1,rtl.createSet(2),null)),null!=this.FOnError&&this.FOnError(this,e.TApplicationError.$clone(n),{get:function(){return a},set:function(e){a=e}}),a},this.DoHandleExit=function(e){return!0,null!=this.FOnExit$1&&this.FOnExit$1(this),!0},this.DoHashChange=function(e){var t="",i=null,a=null,n=null,s=!1;return!0,!this.FAutoFormRoute||(t=location.hash,pas.System.Delete({get:function(){return t},set:function(e){t=e}},1,1),s=!1,null!=this.FOnHashChange&&this.FOnHashChange(this,t,{get:function(){return s},set:function(e){s=e}}),s||(""===t&&(t=this.FInitFormClassName),""!==t&&(""===this.FInitFormClassName&&(this.FInitFormClassName=this.FActiveForm.$classname),null!=(i=pas.Classes.GetClass(t))&&(n=document.body,this.CreateForm$6(i,n,{get:function(){return a},set:function(e){a=e}})))),!0)},this.DoPopState=function(e){return null!=this.FOnPopState&&this.FOnPopState(this,e.state),!0,!0},this.DoErrorClose=function(e){return document.body.removeChild(e.target.parentElement),!0,!0},this.DoUpdateOnlineStatus=function(e){return!0,null!=this.FOnOnlineChange&&(window.navigator.onLine?this.FOnOnlineChange(this,0):this.FOnOnlineChange(this,1)),!0},this.DoVisibilityChange=function(e){var t;return!0,t="visible"===document.visibilityState,null!=this.FOnActivate&&this.FOnActivate(this,t),!0},this.GetFormExtension=function(){return 0!==this.FLanguage?"_"+pas["WEBLib.Lang"].GetLanguageISO639_1Code(this.FLanguage)+pas["WEBLib.WebTools"].cHTMLExt:pas["WEBLib.WebTools"].cHTMLExt};this.GetAuthorizationPageHTML=function(e){function t(e,t){var i=0,a="";a='\r\n\r\n\r\n Authentication Result\r\n \r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n #PLACEHOLDERTEXT#\r\n
\r\n
\r\n \r\n';for(var n=0,s=rtl.length(e)-1;n<=s;n++)i=n,a=pas.SysUtils.StringReplace(a,e[i],t[i],rtl.createSet(0));return a}return t(["#PLACEHOLDERIMAGE#","#PLACEHOLDERTEXT#","#PLACEHOLDERCOLOR#"],e?["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACC0lEQVR4nO2Zv3GDMBSHv+QyQEbICM4EOW+Q9BS4o2QTU9LZBQNkg6zgETyCR0iRkOMIAv3Xk0+/zsiI931nI3iCkpKSkpKSkpKSkpJ7SDN0x2bo3nW//xCymNhphu4E1MAN2PdVe9k6524ETODHXIHXvmpva+c9BqwpWhbgAV6Ar61zsxeggB+z+x1XJmsBG/Bj6mboWtVgtvcATfhpPvqq/ZwfzFKABTwoVobsBFjCj7kyWxmyugc4wsPCypCNAA/wY/L7C3iEP/dVe5geEC8gJDwIFxAaHgQLiAEPQgXEggeBAmLCgzABseFBkIAU8CBEQCp4ECAgJTwYChibCzYXWpmv9jCVFTwYCJgVa31BxXwucapFS4CiWOsLS4EHDQEbxRoXIAkeNgRoFqtdiDR4WBFgWOxmQRLhQdEQsSi2bobuqBqUCg8LvwDHYg991Z49zjeNd3iYCfBU7J8E6fAAT7PPOw9znpqhA3hDODz8F7Dnp2vqKmJ1O8ogQeFh+R7wjB8JrgkOD4plUICEKPCw/hyQSkI0eNh+EowtISo86L0LxJIQHR703wZDS0gCD2b9gFASksGDeUfIt4Sk8GDRE/QoITk8WDZFPUgQAQ8OXWEHCWLgwbEtbiFBFDx42BcwkCAOHjxtjGhIEAkPHneGViSIhQfPW2MLEkTDQ4C9wYmEi3T4kpKSkm+5ax+YhPsUTQAAAABJRU5ErkJggg==",'
Application succesfully authorized
You can close this browser window',"rgb(104, 164, 144)"]:["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABtElEQVR4nO2bUY7CMAxEhz0NB+EgrDjXCg6yB+E4+9NKCAiN7XHcjf1+ED+Z6ahNHScFiqIoBNwvp+v9crpG+3hG6+sgFQFwXv7ejj+/31JBDyy+ugN4ElkJD8HqqyuAhohYjA3D12YAGyIiMSYsXx8D6BTpFmPB9NUMQCjSJcaA7ettAEqRTTErHr5eAjCKfBSz4OXryzhgizOzWCJd/Fs8HoFHzHeCtxf2JNgt3MMID8zXoMpAtDarEDIbidJklMJUQ6MDty6GNDSNRdxtluWwhReDUfONKADAx2jkZCsOAOAaXn4pY2let6oAAN/qTIG61lAHAOwmBFO1aQoACA/BXGqbAwDCQqCsOCkBAMNDoC23aQEAw0Kg9hqoAQDuIdAbLfQAALcQXFptLgEA9BDc+oxeLbF/Qz0C7AFTT4KpX4OpC6HUpXDqxVDq5fBOLn5lbEMkdUssdVM0dVs89cZI6q2x1JujqbfHUx+Q2MPFj/LidUqsKajB05NXS4y6Zl/GurHGe6QOSpLF5jgqqxSb67C0UGzO4/KdYnN/MLEhluOTmYZY+MWvDPU122dzRVHk5g+X6Lw5aVkK9AAAAABJRU5ErkJggg==",'
Application authorization failed

Please try again.',"rgb(216, 99, 68)"])},this.GetColorScheme=function(){var e=0;return e=0,"not all"!==window.matchMedia("(prefers-color-scheme)").media&&(e=window.matchMedia("(prefers-color-scheme: dark)").matches?2:1),e},this.ActivateChildScripts=function(e){!function e(t){if(!0===function(e){return"SCRIPT"===e.tagName}(t))t.parentNode.replaceChild(function(e){var t=document.createElement("script");t.async=!1,t.text=e.innerHTML;for(var i=e.attributes.length-1;i>=0;i--)t.setAttribute(e.attributes[i].name,e.attributes[i].value);return t}(t),t);else for(var i=0,a=t.childNodes;i link")).length-1;s<=o;s++)if(a=s,n=i.item(a).href,0===pas.SysUtils.CompareText(n,e)){t=!0;break}return t},this.Initialize=function(){var e,t,i="",a="";if(this.FCanCreateForm=!0,this.FAppInitializing=!0,this.FParameters.Clear(),i=window.location.href,this.InitFormatSettings(pas["WEBLib.WebTools"].GetBrowserLocale()),this.FParameters.SetDelimiter("&"),this.FParameters.FStrictDelimiter=!0,(e=pas.System.Pos("?",i))>0&&(i=pas.System.Copy(i,e+1,i.length)),this.FParameters.SetDelimitedText(i),t="Authentication"==window.name,null!=this.FOnOAuthCallBack&&(-1!==this.FParameters.IndexOfName("oauthcallback")||t))return this.FOnOAuthCallBack(this,i),this.FIsRedirect=!0,void(document.body.innerHTML=this.GetAuthorizationPageHTML(!0));-1!==this.FParameters.IndexOfName("code")&&this.FHandleOAuth&&(null!=this.FOnOAuthToken&&this.FOnOAuthToken(this,i),this.FIsRedirect=!0,a=this.FParameters.GetValue("code"),window.opener&&window.opener.processAuthData&&(window.opener.processAuthData(a),window.close())),window.addEventListener("hashchange",rtl.createSafeCallback(this,"DoHashChange")),window.addEventListener("online",rtl.createSafeCallback(this,"DoUpdateOnlineStatus")),window.addEventListener("offline",rtl.createSafeCallback(this,"DoUpdateOnlineStatus")),window.addEventListener("popstate",rtl.createCallback(this,"DoPopState")),document.addEventListener("visibilitychange",rtl.createSafeCallback(this,"DoVisibilityChange")),null!==window.opener&&-1!==this.FParameters.IndexOfName("access_token")&&(this.FIsRedirect=!0,a=this.FParameters.GetValue("access_token"),window.opener&&window.opener.processAuthData&&(window.opener.processAuthData(a),window.close()))},this.InitFormatSettings=function(e){var t,i,a=0;i=e,pas.SysUtils.FormatSettings.ShortDateFormat=pas["WEBLib.WebTools"].GetLocaleShortDateFormat(i),pas.System.Pos("/",pas.SysUtils.FormatSettings.ShortDateFormat)>0&&(pas.SysUtils.FormatSettings.DateSeparator="/"),pas.System.Pos(".",pas.SysUtils.FormatSettings.ShortDateFormat)>0&&(pas.SysUtils.FormatSettings.DateSeparator="."),pas.System.Pos("-",pas.SysUtils.FormatSettings.ShortDateFormat)>0&&(pas.SysUtils.FormatSettings.DateSeparator="-");var n=new Date("Jan 1, 1980 06:07:08 GMT+00:00"),s="";for(s=""==i?navigator.language:i,t=n.toLocaleTimeString(s),pas.System.Pos(":",t)>0&&(pas.SysUtils.FormatSettings.TimeSeparator=":"),pas.System.Pos(".",t)>0&&(pas.SysUtils.FormatSettings.TimeSeparator="."),pas.System.Pos("-",t)>0&&(pas.SysUtils.FormatSettings.TimeSeparator="-"),a=1;a<=7;a++)pas.SysUtils.FormatSettings.ShortDayNames[a-1]=pas["WEBLib.WebTools"].GetLocaleShortDayName(a,i),pas.SysUtils.FormatSettings.LongDayNames[a-1]=pas["WEBLib.WebTools"].GetLocaleLongDayName(a,i);for(a=1;a<=12;a++)pas.SysUtils.FormatSettings.ShortMonthNames[a-1]=pas["WEBLib.WebTools"].GetLocaleShortMonthName(a,i),pas.SysUtils.FormatSettings.LongMonthNames[a-1]=pas["WEBLib.WebTools"].GetLocaleLongMonthName(a,i);pas.SysUtils.FormatSettings.DecimalSeparator=pas["WEBLib.WebTools"].GetLocaleDecimalSeparator(""),"."===pas.SysUtils.FormatSettings.DecimalSeparator?pas.SysUtils.FormatSettings.ThousandSeparator=",":pas.SysUtils.FormatSettings.ThousandSeparator="."},this.Run=function(){this.FCanCreateForm=!0,this.FAppInitializing=!1},this.Navigate=function(e,t){0===t?window.open(e,"_blank"):window.location.href=e},this.$rtti.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),this.GetParentForm=function(t){var i=null,a=null;for(i=null,a=t;null!=a&&!e.TCustomForm.isPrototypeOf(a);)a=a===t&&null===a.FOwner?t.FParent:a.FOwner;return null!=a&&e.TCustomForm.isPrototypeOf(a)&&(i=rtl.as(a,e.TCustomForm)),i},this.WinWidth=function(){return null!=e.VSIDE?pas["WEBLib.Forms"].VSIDE.clientWidth():window.innerWidth},this.WinHeight=function(){return null!=e.VSIDE?pas["WEBLib.Forms"].VSIDE.clientHeight():window.innerHeight},this.Application=null,this.HandShakeScript=null,this.VSIDE=null,this.LastHash="",e.$implcode=function(){t.ReleaseForm=function(e){e=rtl.freeLoc(e),e=null}},e.$init=function(){e.HandShakeScript=document.createElement("script"),e.HandShakeScript.id="HandShakeScript",e.HandShakeScript.type="text/javascript",e.HandShakeScript.innerHTML='var IDE = null;\r\nvar TMSWEBCoreClientIdentifier = "unknown";\r\nvar TMSWEBCoreOAuthCallback = "unknown";\r\nfunction HandShake(cid){\r\n TMSWEBCoreClientIdentifier = cid;\r\n}',document.body.appendChild(e.HandShakeScript),e.Application=e.TApplication.$create("Create$1",[null])}}),["WEBLib.Dialogs","WEBLib.WebTools","WEBLib.Utils","Math"]),rtl.module("WEBLib.StdCtrls",["System","Classes","WEBLib.Controls","SysUtils","Web","WEBLib.Graphics","Types","WEBLib.WebTools","WEBLib.Forms","WEBLib.Menus"],(function(){"use strict";var e=this;this.TEditCharCase={0:"wecLowerCase",wecLowerCase:0,1:"wecNormal",wecNormal:1,2:"wecMixedCase",wecMixedCase:2,3:"wecUpperCase",wecUpperCase:3},this.$rtti.$Enum("TEditCharCase",{minvalue:0,maxvalue:3,ordtype:1,enumtype:this.TEditCharCase}),this.TCheckBoxState={0:"cbChecked",cbChecked:0,1:"cbGrayed",cbGrayed:1,2:"cbUnchecked",cbUnchecked:2},this.$rtti.$Enum("TCheckBoxState",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TCheckBoxState}),this.TEllipsisPosition={0:"epEndEllipsis",epEndEllipsis:0,1:"epNone",epNone:1,2:"epPathEllipsis",epPathEllipsis:2,3:"epWordEllipsis",epWordEllipsis:3},this.$rtti.$Enum("TEllipsisPosition",{minvalue:0,maxvalue:3,ordtype:1,enumtype:this.TEllipsisPosition}),this.TTextLayout={0:"tlTop",tlTop:0,1:"tlCenter",tlCenter:1,2:"tlBottom",tlBottom:2},this.$rtti.$Enum("TTextLayout",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TTextLayout}),this.TAutoCompletion={0:"acOff",acOff:0,1:"acHonorificPrefix",acHonorificPrefix:1,2:"acGivenName",acGivenName:2,3:"acAdditionalName",acAdditionalName:3,4:"acFamilyName",acFamilyName:4,5:"acHonorificSuffix",acHonorificSuffix:5,6:"acNickName",acNickName:6,7:"acEmail",acEmail:7,8:"acUserName",acUserName:8,9:"acNewPassword",acNewPassword:9,10:"acCurrentPassword",acCurrentPassword:10,11:"acOrganizationTitle",acOrganizationTitle:11,12:"acOrganization",acOrganization:12,13:"acStreetAddress",acStreetAddress:13,14:"acAddressLine1",acAddressLine1:14,15:"acAddressLine2",acAddressLine2:15,16:"acAddressLine3",acAddressLine3:16,17:"acAddressLevel1",acAddressLevel1:17,18:"acAddressLevel2",acAddressLevel2:18,19:"acAddressLevel3",acAddressLevel3:19,20:"acAddressLevel4",acAddressLevel4:20,21:"acCountry",acCountry:21,22:"acCountryName",acCountryName:22,23:"acPostalCode",acPostalCode:23,24:"acCCName",acCCName:24,25:"acCCGivenName",acCCGivenName:25,26:"acCCAdditionalName",acCCAdditionalName:26,27:"acCCFamilyName",acCCFamilyName:27,28:"acCCNumber",acCCNumber:28,29:"acExpiry",acExpiry:29,30:"acExpiryMonth",acExpiryMonth:30,31:"acExpiryYear",acExpiryYear:31,32:"acCSC",acCSC:32,33:"acType",acType:33,34:"acTransactionCurrency",acTransactionCurrency:34,35:"acTransactionAmount",acTransactionAmount:35,36:"acLanguage",acLanguage:36,37:"acBirthday",acBirthday:37,38:"acBirthdayDay",acBirthdayDay:38,39:"acBirthDayMonth",acBirthDayMonth:39,40:"acBirthDayYear",acBirthDayYear:40,41:"acSex",acSex:41,42:"acTelephone",acTelephone:42,43:"acTelephoneCountryCode",acTelephoneCountryCode:43,44:"acTelephoneNational",acTelephoneNational:44,45:"acTelephoneAreaCode",acTelephoneAreaCode:45,46:"acTelephoneLocal",acTelephoneLocal:46,47:"acTelephoneExtension",acTelephoneExtension:47,48:"acIMPP",acIMPP:48,49:"acURL",acURL:49,50:"acPhoto",acPhoto:50,51:"acNone",acNone:51,52:"acNope",acNope:52},this.$rtti.$Enum("TAutoCompletion",{minvalue:0,maxvalue:52,ordtype:1,enumtype:this.TAutoCompletion}),this.TEditType={0:"weString",weString:0,1:"weFloat",weFloat:1,2:"weHex",weHex:2,3:"weNumeric",weNumeric:3,4:"weSignedFloat",weSignedFloat:4,5:"weSignedNumeric",weSignedNumeric:5,6:"weSearch",weSearch:6},this.$rtti.$Enum("TEditType",{minvalue:0,maxvalue:6,ordtype:1,enumtype:this.TEditType}),this.THTMLType={0:"tLABELTAG",tLABELTAG:0,1:"tSPAN",tSPAN:1,2:"tDIV",tDIV:2,3:"tH1",tH1:3,4:"tH2",tH2:4,5:"tH3",tH3:5,6:"tH4",tH4:6,7:"tH5",tH5:7,8:"tH6",tH6:8,9:"tP",tP:9},this.$rtti.$Enum("THTMLType",{minvalue:0,maxvalue:9,ordtype:1,enumtype:this.THTMLType}),rtl.createClass(this,"TCustomLabel",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FContent=null,this.FAutoSize=!1,this.FEllipsisPosition=0,this.FWordWrap=!1,this.FAlignment=0,this.FLayout=0,this.FTransparent=!1,this.FHTMLType=0,this.FFocusControl=null,this.FShowAccelChar=!1,this.FColor$1=0,this.FHasAccel=!1,this.FHasHTML=!1,this.FElementLabelClassName="",this.FOrigWidth=0,this.FOldWidth=0,this.FOldHeight=0,this.FHTML=""},this.$final=function(){this.FContent=void 0,this.FFocusControl=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.SetLayout=function(e){this.FLayout!==e&&(this.FLayout=e,this.UpdateElementVisual())},this.SetAlignment=function(e){this.FAlignment!==e&&(this.FAlignment=e,this.UpdateElementVisual())},this.GetContentHandle=function(){return this.FContent},this.SetTransparent=function(e){this.FTransparent!==e&&(this.FTransparent=e,this.UpdateElementVisual())},this.SetHTMLType=function(e){var t=null;this.FHTMLType!==e&&(this.FHTMLType=e,this.FHTMLType in rtl.createSet(null,3,8)&&this.SetElementFont(1),null!=this.GetElementHandle()&&null!=this.FContent&&null!=(t=this.GetElementHandle().firstChild)&&"lbl"===t.getAttribute("data-lbl")&&(this.GetElementHandle().removeChild(this.FContent),this.FContent=this.CreateLabelElement(),this.GetElementHandle().appendChild(this.FContent),this.UpdateElement()))},this.SetColorEx=function(e){this.FColor$1=e,4 in this.FComponentState&&16777215!==this.FColor$1&&this.SetTransparent(!1),this.UpdateElement()},this.SetElementLabelClassName=function(e){this.FElementLabelClassName!==e&&(this.FElementLabelClassName=e,this.UpdateElement())},this.SetHTML=function(e){this.FHTML!==e&&(this.FHTML=e,this.UpdateElementData())},this.SetWidth=function(e){-1!==e&&0 in this.FComponentState&&(this.FOrigWidth=e),pas["WEBLib.Controls"].TControl.SetWidth.apply(this,arguments)},this.CreateElement=function(){var e=null;return e=document.createElement("DIV"),this.FContent=this.CreateLabelElement(),e.appendChild(this.FContent),e},this.CreateLabelElement=function(){var e=null;e=null;var t=this.FHTMLType;return 1===t?e=document.createElement("SPAN"):2===t?e=document.createElement("DIV"):3===t?e=document.createElement("H1"):4===t?e=document.createElement("H2"):5===t?e=document.createElement("H3"):6===t?e=document.createElement("H4"):7===t?e=document.createElement("H5"):8===t?e=document.createElement("H6"):0===t?e=document.createElement("LABEL"):9===t&&(e=document.createElement("P")),e.setAttribute("data-lbl","lbl"),e},this.GetDisplayText=function(){return this.FCaption},this.CanShowFocus=function(){return!1,!1},this.SetParent=function(e){pas["WEBLib.Controls"].TControl.SetParent.apply(this,arguments),this.FAutoSize&&0!==this.FAlignment&&-1!==this.FOrigWidth&&(this.SetLeft(this.GetLeft()+this.FOrigWidth-this.GetWidth()),this.FOrigWidth=-1)},this.BindElement=function(){this.FContent=this.GetContainer().firstElementChild},this.Loaded=function(){pas["WEBLib.Controls"].TCustomControl.Loaded.call(this),this.FShowAccelChar&&null!=this.FFocusControl&&this.UpdateElementData()},this.UpdateAutoSize=function(){this.FAutoSize&&0===this.FAlign&&(null!=this.GetElementHandle()&&pas["WEBLib.WebTools"].ElementVisible(this.GetElementHandle())&&(this.SetWidth(-1),this.SetHeight(-1)),this.FEllipsisPosition=1)},this.UpdateElementData=function(){var e="",t="",i=!1,a=null;pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),t="",e=this.GetDisplayText(),e=this.FShowAccelChar&&pas.System.Pos("&",e)>0?pas["WEBLib.WebTools"].ProcessAccelerator(e,{get:function(){return t},set:function(e){t=e}}):""===this.FHTML?pas["WEBLib.WebTools"].HTMLToString(e):this.FHTML,i=!1,pas.System.Pos("\r",e)>0?(i=!0,pas.System.Pos("\n",e)>0&&(e=pas.SysUtils.StringReplace(e,"\n","",rtl.createSet(0,1))),e=pas.SysUtils.StringReplace(e,"\r","
",rtl.createSet(0,1))):pas.System.Pos("\n",e)>0&&(i=!0,e=pas.SysUtils.StringReplace(e,"\n","
",rtl.createSet(0,1))),this.GetIsLinked()&&""===e&&0 in this.FComponentState||(null!=this.GetContentHandle()?this.GetIsLinked()?(a=this.GetContentHandle(),""!==this.GetID()&&(a=document.getElementById(this.GetID())),null!=a&&(pas.System.Assigned(this.GetContentHandle().nodeValue)?a.nodeValue=e:0===a.childElementCount&&(a.innerHTML=e))):this.GetContentHandle().childElementCount>0&&pas.System.Assigned(this.GetContentHandle().nodeValue)&&!this.FHasAccel&&!this.FHasHTML&&!i?this.GetContentHandle().nodeValue=e:this.GetContentHandle().innerHTML=e:this.GetElementHandle().innerHTML=e,this.FHasHTML=pas.System.Pos("0,this.FHasAccel=""!==t,""!==t&&null!=this.FFocusControl&&(this.GetContentHandle().setAttribute("accesskey",t),this.GetContentHandle().setAttribute("for",this.FFocusControl.GetID())))},this.UpdateElementVisual=function(){var e=0,t=0;if(pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),!this.IsUpdating()&&(null!=this.GetElementHandle()&&(t=Math.round(this.GetElementHandle().offsetHeight),e=Math.round(this.GetElementHandle().offsetWidth),t>0&&(this.FOldHeight=t),e>0&&(this.FOldWidth=e),!this.FVisible||this.FAutoSize&&0===this.FAlign||0===this.FAlignment&&0===this.FLayout||this.GetElementHandle().style.setProperty("display","table"),this.GetElementHandle().setAttribute("zindex","1"),this.FAutoSize&&0===this.FAlign&&!(4 in this.FComponentState)?this.GetElementHandle().style.setProperty("overflow",""):this.GetElementHandle().style.setProperty("overflow","hidden")),null!=this.GetContentHandle())){var i=this.FLayout;0===i?this.GetContentHandle().style.setProperty("vertical-align","top"):1===i?this.GetContentHandle().style.setProperty("vertical-align","middle"):2===i&&this.GetContentHandle().style.setProperty("vertical-align","bottom");var a=this.FAlignment;0===a?this.GetContentHandle().style.removeProperty("text-align"):2===a?this.GetContentHandle().style.setProperty("text-align","center"):1===a&&this.GetContentHandle().style.setProperty("text-align","right"),pas["WEBLib.Controls"].SetHTMLElementColor(this.GetElementHandle(),this.FColor$1,this.FTransparent||-1===this.FColor$1||16711422===this.FColor$1),pas["WEBLib.Controls"].SetHTMLElementColor(this.GetContentHandle(),this.FColor$1,this.FTransparent||-1===this.FColor$1||16711422===this.FColor$1),this.GetContentHandle().style.setProperty("display","table-cell"),""===this.FElementClassName?(this.FEnabled&&0===this.FElementFont&&!this.GetIsLinked()?this.GetContentHandle().style.setProperty("color",pas["WEBLib.Graphics"].ColorToHTML(this.FFont.FColor)):this.GetContentHandle().style.removeProperty("color"),this.SetElementPointer(this.GetContentHandle(),this.FCursor),pas["WEBLib.Controls"].SetHTMLElementFont(this.GetContentHandle(),this.FFont,!(0===this.FElementFont&&!this.GetIsLinked()))):(this.GetContentHandle().style.removeProperty("color"),pas["WEBLib.Controls"].SetHTMLElementFont(this.GetContentHandle(),this.FFont,!0)),""!==this.FElementLabelClassName?this.GetContentHandle().setAttribute("class",this.FElementLabelClassName):this.GetContentHandle().removeAttribute("class"),0===this.FElementPosition||1===this.FWidthStyle?1===this.FEllipsisPosition?this.GetContentHandle().style.setProperty("text-overflow","clip"):this.GetContentHandle().style.setProperty("text-overflow","ellipsis"):this.GetContentHandle().style.removeProperty("text-overflow"),this.FWordWrap?this.GetContentHandle().style.setProperty("white-space","normal"):this.GetContentHandle().style.setProperty("white-space","nowrap"),this.GetElementHandle().style.setProperty("user-select",""),0===this.FCursor&&this.GetElementHandle().style.setProperty("cursor",""),this.FAutoSize&&0===this.FAlign&&!(4 in this.FComponentState)&&(this.GetElementHandle().style.removeProperty("width"),this.GetElementHandle().style.removeProperty("height"))}},this.UpdateElementSize=function(){pas["WEBLib.Controls"].TControl.UpdateElementSize.call(this),this.FAutoSize&&0===this.FAlign&&null!=this.GetElementHandle()&&(4 in this.FComponentState||(this.GetElementHandle().style.removeProperty("width"),this.GetElementHandle().style.removeProperty("height"))),null!=this.GetContentHandle()&&this.FAlign in rtl.createSet(3,4,5)&&!this.FAutoSize&&this.FLayout in rtl.createSet(1,2)&&this.GetContentHandle().style.setProperty("height",pas.SysUtils.TIntegerHelper.ToString$1.call({p:this.GetHeight(),get:function(){return this.p},set:function(e){this.p=e}})+"px")},this.SetAutoSize=function(e){this.FAutoSize!==e&&(this.FAutoSize=e,this.UpdateAutoSize(),this.UpdateElement())},this.SetCaption=function(e){var t=0;this.FCaption!==e&&(t=this.GetWidth(),pas["WEBLib.Controls"].TCustomControl.SetCaption.call(this,e),this.UpdateAutoSize(),this.UpdateElement(),t-=this.GetWidth(),this.FAutoSize&&0!==this.FAlignment&&0!==t&&2 in this.FAnchors&&!this.IsUpdating()&&this.SetLeft(this.GetLeft()+t))},this.SetControlCursor=function(e){pas["WEBLib.Controls"].TControl.SetControlCursor.apply(this,arguments),""===this.FElementClassName&&null!=this.GetContentHandle()&&this.SetElementPointer(this.GetContentHandle(),this.FCursor)},this.SetEllipsisPosition=function(e){this.FEllipsisPosition!==e&&(this.FEllipsisPosition=e,1!==this.FEllipsisPosition&&(this.FAutoSize=!1),this.UpdateElement())},this.GetWidth=function(){var e=0;return this.FAutoSize&&null!=this.GetElementHandle()&&null!=this.FParent?(0===(e=Math.round(this.GetElementHandle().offsetWidth))&&(e=pas["WEBLib.Controls"].TControl.GetWidth.call(this)),0===e&&""!==this.FCaption&&4 in this.FComponentState&&(e=this.FOldWidth)):e=pas["WEBLib.Controls"].TControl.GetWidth.call(this),e},this.GetHeight=function(){var e=0;return this.FAutoSize&&null!=this.GetElementHandle()&&null!=this.FParent?(0===(e=Math.round(this.GetElementHandle().offsetHeight))&&(e=pas["WEBLib.Controls"].TControl.GetHeight.call(this)),0===e&&""!==this.FCaption&&4 in this.FComponentState&&(e=this.FOldHeight)):e=pas["WEBLib.Controls"].TControl.GetHeight.call(this),e},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FAutoSize=!0,this.FLayout=0,this.FEllipsisPosition=1,this.FColor$1=16777215,this.FTransparent=!0,this.FAlignment=0,this.SetTabStop(!1),this.FShowAccelChar=!0}})),rtl.createClass(this,"TLabel",this.TCustomLabel,(function(){var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("Alignment",2,pas.Classes.$rtti.TAlignment,"FAlignment","SetAlignment",{Default:pas.Classes.TAlignment.taLeftJustify}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("AutoSize",2,rtl.boolean,"FAutoSize","SetAutoSize",{Default:!0}),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor$1","SetColorEx",{Default:16777215}),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("EllipsisPosition",2,e.$rtti.TEllipsisPosition,"FEllipsisPosition","SetEllipsisPosition",{Default:e.TEllipsisPosition.epNone}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),t.addProperty("ElementLabelClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementLabelClassName","SetElementLabelClassName"),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("FocusControl",0,pas["WEBLib.Controls"].$rtti.TWinControl,"FFocusControl","FFocusControl"),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Hint",2,rtl.string,"FHint","SetHint"),t.addProperty("HTML",2,rtl.string,"FHTML","SetHTML"),t.addProperty("HTMLType",2,e.$rtti.THTMLType,"FHTMLType","SetHTMLType",{Default:e.THTMLType.tLABELTAG}),t.addProperty("Layout",2,e.$rtti.TTextLayout,"FLayout","SetLayout",{Default:e.TTextLayout.tlTop}),t.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("ShowAccelChar",0,rtl.boolean,"FShowAccelChar","FShowAccelChar",{Default:!0}),t.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),t.addProperty("TextDirection",0,pas["WEBLib.Controls"].$rtti.TTextDirection,"FTextDirection","FTextDirection",{Default:pas["WEBLib.Controls"].TTextDirection.tdDefault}),t.addProperty("Top",3,rtl.longint,"GetTop","SetTop"),t.addProperty("Transparent",2,rtl.boolean,"FTransparent","SetTransparent",{Default:!0}),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("WordWrap",0,rtl.boolean,"FWordWrap","FWordWrap",{Default:!1}),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),t.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),t.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),t.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag")})),rtl.createClass(this,"TCustomInput",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.IsInputControl=function(){return!0,!0},this.GetInputType=function(){return"EDIT","EDIT"},this.CreateElement=function(){var e=null;return(e=document.createElement("INPUT")).setAttribute("type",this.GetInputType()),e},this.UpdateElementVisual=function(){pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),null==this.GetContainer()||this.GetIsLinked()||(this.GetContainer().style.setProperty("-moz-box-sizing","border-box"),this.GetContainer().style.setProperty("-webkit-box-sizing","border-box"),this.GetContainer().style.setProperty("box-sizing","border-box"))},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.SetShowFocus(!0),this.FNoUserSelect=!1}})),rtl.createClass(this,"TCustomEdit",this.TCustomInput,(function(){this.$init=function(){e.TCustomInput.$init.call(this),this.FCharCase=0,this.FMaxLength=0,this.FReadOnly=!1,this.FText="",this.FTextHint="",this.FSelStart=0,this.FAlignment=0,this.FHideSelection=!1,this.FPasswordChar="",this.FOnChange=null,this.FAutoSize=!1,this.FAutoSelect=!1,this.FSelLength=0,this.FNumeric=!1,this.FAutoCompletion=0,this.FEditType=0,this.FRequired=!1,this.FAutoFocus=!1,this.FPattern="",this.FHandlePastePtr=null,this.FHandleCutPtr=null,this.FHandleChangePtr=null,this.FHandleInvalidPtr=null,this.FSpellCheck=!1,this.FRequiredText=""},this.$final=function(){this.FOnChange=void 0,e.TCustomInput.$final.call(this)},this.SetAlignment=function(e){this.FAlignment=e,this.UpdateElement()},this.SetHideSelection=function(e){this.FHideSelection!==e&&(this.FHideSelection=e,this.UpdateElement())},this.SetAutoSelect=function(e){this.FAutoSelect!==e&&(this.FAutoSelect=e,this.UpdateElement())},this.SetAutoSize=function(e){this.FAutoSize!==e&&(this.FAutoSize=e,this.UpdateElement())},this.SetPasswordChar=function(e){this.FPasswordChar=e,this.UpdateElement()},this.SetAutoCompletion=function(e){this.FAutoCompletion!==e&&(this.FAutoCompletion=e,this.UpdateElement())},this.SetAutoFocus=function(e){this.FAutoFocus!==e&&(this.FAutoFocus=e,this.UpdateElement())},this.SetRequired=function(e){this.FRequired=e,this.UpdateElement()},this.SetPattern=function(e){this.FPattern!==e&&(this.FPattern=e,this.UpdateElement())},this.SetEditType=function(e){this.FEditType!==e&&(this.FEditType=e,this.UpdateElement())},this.SetSpellCheck=function(e){this.FSpellCheck!==e&&(this.FSpellCheck=e,this.UpdateElement())},this.GetElementInputHandle=function(){return this.GetContainer()},this.DoHandlePaste=function(e){var t="",i=!1;i=!1;var a=e.clipboardData||window.clipboardData;return a&&(t=a.getData("Text"),i=!0),!i||this.CanPaste(t)&&this.Validate(t)||(e.preventDefault(),e.stopPropagation()),!1,!1},this.DoHandleCut=function(e){return this.CanCut()||(e.preventDefault(),e.stopPropagation()),!1,!1},this.DoHandleChange=function(e){return this.Change(),!0,""!==this.FRequiredText&&this.GetElementInputHandle().setCustomValidity(""),!0},this.DoHandleInvalid=function(e){return this.GetElementInputHandle().setCustomValidity(this.FRequiredText),!0,!0},this.IsCustomEditor=function(){return!1,!1},this.KeyPress=function(e){var t=!1;pas["WEBLib.Controls"].TControl.KeyPress.call(this,e),t=!0;var i=this.FEditType;3===i?t=e.get().charCodeAt()in rtl.createSet(null,48,57):5===i?t=e.get().charCodeAt()in rtl.createSet(null,48,57,43,45):1===i?t=e.get().charCodeAt()in rtl.createSet(null,48,57,44,46):4===i?t=e.get().charCodeAt()in rtl.createSet(null,48,57,44,46,43,45):2===i&&(t=e.get().charCodeAt()in rtl.createSet(null,48,57,null,65,70)),t||e.set("\0")},this.DoEnter=function(){pas["WEBLib.Controls"].TControl.DoEnter.call(this),this.FAutoSelect&&null!=this.GetElementInputHandle()&&this.GetElementInputHandle().select()},this.GetInputType=function(){return"\0"!==this.FPasswordChar?"PASSWORD":this.FNumeric?"NUMBER":this.FEditType in rtl.createSet(1,3)?"TEL":6===this.FEditType?"SEARCH":"TEXT"},this.GetText=function(){var e="";return e=this.FText,null!=this.GetElementInputHandle()&&(e=this.GetElementInputHandle().value),3===this.FCharCase&&(e=pas.SysUtils.UpperCase(e)),0===this.FCharCase&&(e=pas.SysUtils.LowerCase(e)),e},this.GetDisplayText=function(){return this.FText},this.IsReadOnly=function(){return this.FReadOnly},this.Validate=function(e){var t=!1,i=0,a="",n=!1;t=!0;for(var s=1,o=e.length;s<=o;s++){i=s,a=e.charAt(i-1),n=!0;var r=this.FEditType;if(3===r?n=a.charCodeAt()in rtl.createSet(null,48,57):5===r?n=a.charCodeAt()in rtl.createSet(null,48,57,43,45):1===r?n=a.charCodeAt()in rtl.createSet(null,48,57,44,46):4===r?n=a.charCodeAt()in rtl.createSet(null,48,57,44,46,43,45):2===r&&(n=a.charCodeAt()in rtl.createSet(null,48,57,null,65,70)),!n){t=!1;break}}return t},this.ClearMethodPointers=function(){pas["WEBLib.Controls"].TControl.ClearMethodPointers.call(this),this.FHandlePastePtr=null,this.FHandleCutPtr=null,this.FHandleChangePtr=null,this.FHandleInvalidPtr=null},this.GetMethodPointers=function(){pas["WEBLib.Controls"].TControl.GetMethodPointers.call(this),this.FHandlePastePtr=rtl.createCallback(this,"DoHandlePaste"),this.FHandleCutPtr=rtl.createCallback(this,"DoHandleCut"),this.FHandleChangePtr=rtl.createCallback(this,"DoHandleChange"),this.FHandleInvalidPtr=rtl.createCallback(this,"DoHandleInvalid")},this.BindEvents=function(){pas["WEBLib.Controls"].TCustomControl.BindEvents.call(this),null!=this.GetElementInputHandle()&&(this.GetElementInputHandle().addEventListener("input",this.FHandleChangePtr),this.GetElementInputHandle().addEventListener("paste",this.FHandlePastePtr),this.GetElementInputHandle().addEventListener("cut",this.FHandleCutPtr),this.GetElementInputHandle().addEventListener("invalid",this.FHandleInvalidPtr))},this.UnbindEvents=function(){pas["WEBLib.Controls"].TControl.UnbindEvents.call(this),null!=this.GetElementInputHandle()&&(this.GetElementInputHandle().removeEventListener("input",this.FHandleChangePtr),this.GetElementInputHandle().removeEventListener("paste",this.FHandlePastePtr),this.GetElementInputHandle().removeEventListener("cut",this.FHandleCutPtr),this.GetElementInputHandle().removeEventListener("invalid",this.FHandleInvalidPtr))},this.UpdateElementData=function(){var t=null,i=0,a=0,n=!1,s=!1;if(pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),null!=this.GetElementInputHandle()){if(!this.GetIsLinked()){var o=this.FCharCase;3===o?this.GetElementInputHandle().style.setProperty("text-transform","uppercase"):0===o?this.GetElementInputHandle().style.setProperty("text-transform","lowercase"):2===o?this.GetElementInputHandle().style.setProperty("text-transform","capitalize"):1===o&&this.GetElementInputHandle().style.setProperty("text-transform","initial")}if(this.GetElementInputHandle().readOnly=this.IsReadOnly(),""!==this.FTextHint&&(this.GetElementInputHandle().placeholder=this.FTextHint),s=!0,this.GetIsLinked()&&(s=!this.GetElementInputHandle().hasAttribute("autocomplete")),s&&(52===this.FAutoCompletion?(this.GetElementInputHandle().setAttribute("autocomplete","nope"),this.GetIsLinked()||this.GetElementInputHandle().removeAttribute("name")):51===this.FAutoCompletion?(this.GetElementInputHandle().setAttribute("autocomplete","off"),this.GetIsLinked()||this.GetElementInputHandle().removeAttribute("name")):0!==this.FAutoCompletion?(this.GetElementInputHandle().setAttribute("autocomplete","on"),this.GetIsLinked()||this.GetElementInputHandle().setAttribute("name",e.GetAutoCompletionName(this.FAutoCompletion))):(this.GetElementInputHandle().removeAttribute("autocomplete"),this.GetIsLinked()||this.GetElementInputHandle().removeAttribute("name"))),!this.GetIsLinked()){this.GetElementInputHandle().setAttribute("type",this.GetInputType()),this.GetElementInputHandle().setAttribute("role","textbox");var r=this.FAlignment;0===r?this.GetElementInputHandle().style.removeProperty("text-align"):2===r?this.GetElementInputHandle().style.setProperty("text-align","center"):1===r&&this.GetElementInputHandle().style.setProperty("text-align","right")}this.FRequired?this.GetElementInputHandle().setAttribute("required",""):this.GetIsLinked()||this.GetElementInputHandle().removeAttribute("required"),this.FAutoFocus?this.GetElementInputHandle().setAttribute("autofocus",""):this.GetIsLinked()||this.GetElementInputHandle().removeAttribute("autofocus"),""!==this.FPattern?this.GetElementInputHandle().setAttribute("pattern",this.FPattern):this.GetElementInputHandle().removeAttribute("pattern"),this.FMaxLength<=0?this.GetElementInputHandle().removeAttribute("maxLength"):this.GetElementInputHandle().maxLength=this.FMaxLength,this.GetElementInputHandle().value=this.GetDisplayText(),n="NUMBER"===pas.SysUtils.UpperCase(this.GetInputType()),this.FSpellCheck?this.GetElementInputHandle().removeAttribute("spellcheck"):this.GetElementInputHandle().setAttribute("spellcheck","false"),n||this.GetIsLinked()||this.IsCustomEditor()||(i=this.FSelStart,a=this.FSelStart+this.FSelLength,t=this.GetElementInputHandle(),setTimeout((function(){t.setSelectionRange(i,a)}),1))}},this.SetCharCase=function(e){this.FCharCase!==e&&(this.FCharCase=e,this.UpdateElement())},this.SetMaxLength=function(e){this.FMaxLength!==e&&(this.FMaxLength=e,this.UpdateElementData())},this.SetReadOnly=function(e){this.FReadOnly!==e&&(this.FReadOnly=e,this.UpdateElement())},this.SetText=function(e){this.FText=e,null!=this.GetElementInputHandle()&&(this.GetElementInputHandle().value=this.GetDisplayText(),this.GetElementInputHandle().readOnly=this.IsReadOnly())},this.SetTextHint=function(e){this.FTextHint=e,this.UpdateElement()},this.CanPaste=function(e){return!0,!0},this.CanCut=function(){return!0,!0},this.CreateInitialize=function(){e.TCustomInput.CreateInitialize.call(this),this.FAutoCompletion=0,this.FEditType=0,this.FText="",this.FCharCase=1,this.FMaxLength=0,this.FReadOnly=!1,this.FTextHint="",this.FPasswordChar="\0",this.FSpellCheck=!0,this.FAutoSelect=!0,this.SetHeight(25)},this.Change=function(){null!=this.GetElementHandle()&&(this.FText=this.GetElementInputHandle().value),null!=this.FOnChange&&this.FOnChange(this)}})),rtl.createClass(this,"TEdit",this.TCustomEdit,(function(){var t=this.$rtti;t.addProperty("Alignment",2,pas.Classes.$rtti.TAlignment,"FAlignment","SetAlignment"),t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("AutoCompletion",2,e.$rtti.TAutoCompletion,"FAutoCompletion","SetAutoCompletion",{Default:e.TAutoCompletion.acOff}),t.addProperty("AutoFocus",2,rtl.boolean,"FAutoFocus","SetAutoFocus",{Default:!1}),t.addProperty("AutoSize",2,rtl.boolean,"FAutoSize","SetAutoSize",{Default:!1}),t.addProperty("AutoSelect",2,rtl.boolean,"FAutoSelect","SetAutoSelect",{Default:!0}),t.addProperty("BiDiMode",2,pas["WEBLib.Controls"].$rtti.TBiDiMode,"FBiDiMode","SetBiDiMode",{Default:pas["WEBLib.Controls"].TBiDiMode.bdLeftToRight}),t.addProperty("BorderStyle",2,pas["WEBLib.Controls"].$rtti.TBorderStyle,"FBorderStyle","SetBorderStyle",{Default:pas["WEBLib.Controls"].TBorderStyle.bsSingle}),t.addProperty("CharCase",2,e.$rtti.TEditCharCase,"FCharCase","SetCharCase",{Default:e.TEditCharCase.wecNormal}),t.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("EditType",2,e.$rtti.TEditType,"FEditType","SetEditType",{Default:e.TEditType.weString}),t.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Hint",2,rtl.string,"FHint","SetHint"),t.addProperty("HideSelection",2,rtl.boolean,"FHideSelection","SetHideSelection"),t.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("PasswordChar",2,rtl.char,"FPasswordChar","SetPasswordChar",{Default:"\0"}),t.addProperty("Pattern",2,rtl.string,"FPattern","SetPattern"),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("MaxLength",2,rtl.longint,"FMaxLength","SetMaxLength",{Default:0}),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("ReadOnly",2,rtl.boolean,"FReadOnly","SetReadOnly",{Default:!1}),t.addProperty("Required",2,rtl.boolean,"FRequired","SetRequired",{Default:!1}),t.addProperty("RequiredText",0,rtl.string,"FRequiredText","FRequiredText"),t.addProperty("ShowFocus",2,rtl.boolean,"FShowFocus","SetShowFocus",{Default:!1}),t.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),t.addProperty("SpellCheck",2,rtl.boolean,"FSpellCheck","SetSpellCheck",{Default:!0}),t.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),t.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),t.addProperty("Text",3,rtl.string,"GetText","SetText"),t.addProperty("TextDirection",0,pas["WEBLib.Controls"].$rtti.TTextDirection,"FTextDirection","FTextDirection",{Default:pas["WEBLib.Controls"].TTextDirection.tdDefault}),t.addProperty("TextHint",2,rtl.string,"FTextHint","SetTextHint"),t.addProperty("Top",3,rtl.longint,"GetTop","SetTop"),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnChange",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnChange","FOnChange"),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnKeyDown",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyDown","FOnKeyDown"),t.addProperty("OnKeyPress",0,pas["WEBLib.Controls"].$rtti.TKeyPressEvent,"FOnKeyPress","FOnKeyPress"),t.addProperty("OnKeyUp",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyUp","FOnKeyUp"),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),t.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),t.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),t.addProperty("OnEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnEnter","FOnEnter"),t.addProperty("OnExit",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnExit","FOnExit"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")})),rtl.createClass(this,"TButton",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FModalResult=0,this.FDefault=!1,this.FCancel=!1,this.FButtonType=""},this.SetButtonType=function(e){this.FButtonType=e,this.UpdateElementData()},this.SetDefault=function(e){this.FDefault=e,this.FDefault&&this.SetFocus()},this.CreateElement=function(){var e=null;return(e=document.createElement("BUTTON")).setAttribute("type","BUTTON"),e},this.SetCaption=function(e){this.FCaption!==e&&(pas["WEBLib.Controls"].TCustomControl.SetCaption.call(this,e),this.UpdateElementData())},this.UpdateElementData=function(){var e="";pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),this.GetIsLinked()&&""===this.FCaption||null!=this.GetElementHandle()&&((0===this.GetElementHandle().childElementCount||pas.System.Pos("0||!this.GetIsLinked())&&(this.GetElementHandle().innerHTML=pas["WEBLib.WebTools"].ProcessAccelerator(this.FCaption,{get:function(){return e},set:function(t){e=t}})),""!==e&&this.GetElementHandle().setAttribute("accesskey",e),this.GetElementHandle().setAttribute("role","button"),this.GetElementHandle().setAttribute("aria-label",this.FCaption),""!==this.FButtonType?this.GetElementHandle().setAttribute("type",this.FButtonType):this.GetElementHandle().setAttribute("type","BUTTON"))},this.UpdateElementVisual=function(){var e="";pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),null!=this.GetElementHandle()&&(this.GetElementHandle().style.removeProperty("outline"),this.GetElementHandle().style.removeProperty("user-select"),"BTN"===(e=pas.SysUtils.UpperCase(this.FElementClassName))||pas.System.Pos("BTN ",e))},this.HandleKeyPreview=function(e){pas["WEBLib.Controls"].TControl.HandleKeyPreview.apply(this,arguments),this.FDefault&&13===e&&this.Click(),this.FCancel&&27===e&&this.Click()},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),4 in this.FComponentState&&""===this.FCaption&&this.SetCaption(this.FName),this.SetColor(-1),this.FModalResult=0},this.Click=function(){var e=null;pas["WEBLib.Controls"].TControl.Click.call(this),0!==this.FModalResult&&null!=(e=pas["WEBLib.Forms"].GetParentForm(this))&&e.SetModalResult(this.FModalResult)};var e=this.$rtti;e.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),e.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),e.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),e.addProperty("BiDiMode",2,pas["WEBLib.Controls"].$rtti.TBiDiMode,"FBiDiMode","SetBiDiMode",{Default:pas["WEBLib.Controls"].TBiDiMode.bdLeftToRight}),e.addProperty("BorderStyle",2,pas["WEBLib.Controls"].$rtti.TBorderStyle,"FBorderStyle","SetBorderStyle",{Default:pas["WEBLib.Controls"].TBorderStyle.bsSingle}),e.addProperty("ButtonType",2,rtl.string,"FButtonType","SetButtonType"),e.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),e.addProperty("Cancel",0,rtl.boolean,"FCancel","FCancel",{Default:!1}),e.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),e.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),e.addProperty("Default",2,rtl.boolean,"FDefault","SetDefault",{Default:!1}),e.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),e.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),e.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),e.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),e.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),e.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),e.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),e.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),e.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),e.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("Hint",2,rtl.string,"FHint","SetHint"),e.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),e.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),e.addProperty("ModalResult",0,rtl.longint,"FModalResult","FModalResult",{Default:0}),e.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),e.addProperty("Role",3,rtl.string,"GetRole","SetRole"),e.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),e.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),e.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),e.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),e.addProperty("TextDirection",0,pas["WEBLib.Controls"].$rtti.TTextDirection,"FTextDirection","FTextDirection",{Default:pas["WEBLib.Controls"].TTextDirection.tdDefault}),e.addProperty("Top",3,rtl.longint,"GetTop","SetTop"),e.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),e.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),e.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),e.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),e.addProperty("OnKeyDown",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyDown","FOnKeyDown"),e.addProperty("OnKeyPress",0,pas["WEBLib.Controls"].$rtti.TKeyPressEvent,"FOnKeyPress","FOnKeyPress"),e.addProperty("OnKeyUp",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyUp","FOnKeyUp"),e.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),e.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),e.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),e.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),e.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),e.addProperty("OnEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnEnter","FOnEnter"),e.addProperty("OnExit",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnExit","FOnExit"),e.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),e.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),e.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),e.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")})),rtl.createClass(this,"TCheckBox",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FChecked=!1,this.FState=0,this.FElementButtonClassName="",this.FElementLabelClassName="",this.FOnCheckClick=null,this.FAlignment=0},this.$final=function(){this.FOnCheckClick=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.SetAlignment=function(e){this.FAlignment!==e&&(this.FAlignment=e,this.UpdateElementVisual())},this.Loaded=function(){pas["WEBLib.Controls"].TCustomControl.Loaded.call(this),null!=this.GetContainer()&&(this.GetIsLinked()||(this.GetContainer().children.item(1).onclick=rtl.createSafeCallback(this,"HandleLabelClick")))},this.UpdateElementData=function(){var e=null;pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),null!=this.GetContainer()&&((e=this.GetCheckElement()).disabled=!this.IsEnabled(),e.checked=this.FChecked,e.indeterminate=1===this.GetState(),this.GetIsLinked()||(""!==this.FCaption&&(this.GetContainer().lastElementChild.innerHTML=this.FCaption),this.GetElementHandle().setAttribute("tabindex","-1"),this.GetElementHandle().firstChild.setAttribute("tabindex","-1")),this.FTabStop&&this.GetContainer().setAttribute("tabindex",pas.SysUtils.IntToStr(this.FTabOrder)))},this.UpdateElementSize=function(){pas["WEBLib.Controls"].TControl.UpdateElementSize.call(this),null==this.GetContainer()||this.GetIsLinked()||0!==this.FElementPosition||(2!==this.FHeightStyle?this.GetContainer().firstElementChild.style.setProperty("height","100%"):this.GetContainer().firstElementChild.style.removeProperty("height"))},this.UpdateElementVisual=function(){var t=null,i=null,a=null,n=!1;pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),null!=this.GetElementHandle()&&(null!=(t=this.GetElementHandle().firstChild)&&(null!=t.style&&t.style.setProperty("margin-right","4px"),""!==this.FElementButtonClassName?t.setAttribute("class",this.FElementButtonClassName):t.removeAttribute("class")),null!=(i=this.GetElementHandle().lastElementChild)&&(""!==this.FElementLabelClassName?i.setAttribute("class",this.FElementLabelClassName):i.removeAttribute("class")),this.FTabStop&&this.FShowFocus&&""===this.FElementClassName||this.GetElementHandle().style.setProperty("outline","none"),this.GetIsLinked()||(this.GetElementHandle().style.setProperty("user-select","none"),0===this.FElementPosition&&(""===this.FElementButtonClassName&&(1===this.FAlignment?t.style.setProperty("float","left"):t.style.setProperty("float","right"),2===this.FHeightStyle?t.style.removeProperty("height"):0===this.FElementPosition&&t.style.setProperty("height","100%"),t.style.setProperty("vertical-align","middle"),e.TCheckGroup.isPrototypeOf(this.FParent)||(t.style.setProperty("margin-top","0px"),t.style.setProperty("margin-bottom","0px"))),n=null!=(a=pas["WEBLib.Forms"].GetParentForm(this))&&1===a.FCSSLibrary,(""===this.FElementLabelClassName||n)&&((i=this.GetContainer().lastElementChild).style.setProperty("vertical-align","middle"),i.style.setProperty("min-height","100%"),i.style.setProperty("height","100%"),i.style.setProperty("position","absolute"),i.style.setProperty("overflow","hidden"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center")))))},this.CreateElement=function(){var e=null,t=null,i=null;return e=document.createElement("SPAN"),t=document.createElement("INPUT"),i=document.createElement("SPAN"),t.setAttribute("TYPE","CHECKBOX"),t.setAttribute("id",this.GetID()),t.setAttribute("role","checkbox"),i.setAttribute("id",this.GetID()+"lbl"),i.setAttribute("value",this.GetID()),e.appendChild(t),e.appendChild(i),rtl.asExt(t,HTMLInputElement).onclick=rtl.createSafeCallback(this,"HandleCheckClick"),e},this.SetChecked=function(e){this.FChecked=e,this.FState=e?0:2,this.UpdateElement()},this.GetChecked=function(){return null!=this.GetContainer()&&(this.FChecked=this.GetCheckElement().checked),this.FChecked},this.SetState=function(e){this.FState=e,this.FChecked=0===this.FState,this.UpdateElement()},this.GetState=function(){return this.FState},this.SetCaption=function(e){this.FCaption!==e&&(pas["WEBLib.Controls"].TCustomControl.SetCaption.call(this,e),null!=this.GetContainer()&&(this.GetIsLinked()?null!=this.GetContainer().lastElementChild&&"SPAN"===this.GetContainer().lastElementChild.tagName&&(this.GetContainer().lastElementChild.innerHTML=e):null!=this.GetContainer().lastElementChild&&(this.GetContainer().lastElementChild.innerHTML=e)))},this.SetEnabled=function(e){pas["WEBLib.Controls"].TControl.SetEnabled.apply(this,arguments),null!=this.GetContainer()&&(this.GetCheckElement().disabled=!e)},this.HandleLabelClick=function(e){var t=null;return null!=this.GetContainer()&&this.FEnabled&&((t=this.GetCheckElement()).checked=!t.checked,this.SetChecked(t.checked)),this.DoCheckClick(),!0,!0},this.HandleCheckClick=function(e){return this.DoCheckClick(),!0,!0},this.Click=function(){pas["WEBLib.Controls"].TControl.Click.call(this),this.FChecked=this.GetChecked(),this.FChecked?this.FState=0:this.FState=2,this.SetFocus()},this.DoCheckClick=function(){null!=this.FOnCheckClick&&this.FOnCheckClick(this)},this.GetCheckElement=function(){return this.GetIsLinked()&&"INPUT"===this.GetElementHandle().tagName?this.GetElementHandle():this.GetContainer().firstElementChild},this.KeyPress=function(e){var t=null;pas["WEBLib.Controls"].TControl.KeyPress.apply(this,arguments)," "===e.get()&&null!=this.GetContainer()&&((t=this.GetCheckElement()).checked=!t.checked)},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.SetColor(-1),this.FChecked=!1,this.FState=2,this.SetAlignment(1),4 in this.FComponentState&&""===this.FCaption&&this.SetCaption(this.FName),this.SetShowFocus(!0)};var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("Alignment",2,pas.Classes.$rtti.TAlignment,"FAlignment","SetAlignment",{Default:pas.Classes.TAlignment.taRightJustify}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("Checked",3,rtl.boolean,"GetChecked","SetChecked",{Default:!1}),t.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor",{Default:-1}),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),t.addProperty("ElementButtonClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementButtonClassName","FElementButtonClassName"),t.addProperty("ElementLabelClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementLabelClassName","FElementLabelClassName"),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Hint",2,rtl.string,"FHint","SetHint"),t.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("Role",3,rtl.string,"GetRole","SetRole"),t.addProperty("ShowFocus",2,rtl.boolean,"FShowFocus","SetShowFocus",{Default:!1}),t.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),t.addProperty("State",3,e.$rtti.TCheckBoxState,"GetState","SetState",{Default:e.TCheckBoxState.cbUnchecked}),t.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),t.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),t.addProperty("Top",3,rtl.longint,"GetTop","SetTop"),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnKeyDown",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyDown","FOnKeyDown"),t.addProperty("OnKeyPress",0,pas["WEBLib.Controls"].$rtti.TKeyPressEvent,"FOnKeyPress","FOnKeyPress"),t.addProperty("OnKeyUp",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyUp","FOnKeyUp"),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),t.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),t.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),t.addProperty("OnEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnEnter","FOnEnter"),t.addProperty("OnExit",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnExit","FOnExit"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")})),rtl.createClass(this,"TRadioButton",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FChecked=!1,this.FGroupName="",this.FElementButtonClassName="",this.FElementLabelClassName=""},this.CreateElement=function(){var e=null,t=null,i=null;return e=document.createElement("SPAN"),t=document.createElement("INPUT"),i=document.createElement("SPAN"),e.addEventListener("click",rtl.createCallback(this,"HandleLabelClick")),t.setAttribute("TYPE","RADIO"),t.setAttribute("id",this.GetID()+"rd"),t.setAttribute("name",this.FGroupName),t.setAttribute("role","radio"),t.setAttribute("tabindex","-1"),t.addEventListener("click",rtl.createCallback(this,"HandleRadioClick")),i.setAttribute("id",this.GetID()+"lbl"),i.setAttribute("value",this.GetID()),e.appendChild(t),e.appendChild(i),e},this.SetChecked=function(e){this.FChecked=e,null!=this.GetContainer()&&(this.GetRadioElement().checked=e)},this.GetChecked=function(){var e=!1;return e=this.FChecked,null!=this.GetContainer()&&(e=this.GetRadioElement().checked),e},this.SetEnabled=function(e){pas["WEBLib.Controls"].TControl.SetEnabled.apply(this,arguments),null!=this.GetContainer()&&(this.GetRadioElement().disabled=!e)},this.SetCaption=function(e){this.FCaption!==e&&(pas["WEBLib.Controls"].TCustomControl.SetCaption.call(this,e),null==this.GetContainer()||this.GetIsLinked()||(this.GetContainer().lastElementChild.innerHTML=e))},this.SetGroupName=function(e){this.FGroupName=e,this.UpdateElementData()},this.HandleLabelClick=function(e){return null!=this.GetContainer()&&this.FEnabled&&(this.GetRadioElement().checked=!0),!0,!0},this.HandleRadioClick=function(e){return this.SetFocus(),!0,!0},this.UpdateElementSize=function(){pas["WEBLib.Controls"].TControl.UpdateElementSize.call(this),null==this.GetContainer()||this.GetIsLinked()||(2!==this.FHeightStyle?this.GetContainer().firstElementChild.style.setProperty("height","100%"):this.GetContainer().firstElementChild.style.removeProperty("height"))},this.UpdateElementData=function(){var e=null;pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),null!=this.GetContainer()&&(this.GetIsLinked()?this.GetElementHandle().setAttribute("name",this.FGroupName):(this.GetContainer().firstElementChild.setAttribute("name",this.FGroupName),(e=this.GetElementHandle().firstChild).disabled=!this.FEnabled),this.GetIsLinked()||(""!==this.FCaption&&(this.GetContainer().lastElementChild.innerHTML=this.FCaption),this.GetElementHandle().setAttribute("tabindex","-1"),this.FTabStop&&null!=e&&e.setAttribute("tabindex","-1")),this.FTabStop&&this.GetContainer().setAttribute("tabindex",pas.SysUtils.IntToStr(this.FTabOrder)))},this.UpdateElementVisual=function(){var t=null,i=null,a=!1,n=null;pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),null!=this.GetElementHandle()&&(this.GetIsLinked()||((t=this.GetElementHandle().firstChild).style.setProperty("margin-right","4px"),null!=t&&(""!==this.FElementButtonClassName?t.setAttribute("class",this.FElementButtonClassName):t.removeAttribute("class")),null!=(i=this.GetElementHandle().lastElementChild)&&(""!==this.FElementLabelClassName?i.setAttribute("class",this.FElementLabelClassName):i.removeAttribute("class"))),this.FTabStop&&this.FShowFocus&&""===this.FElementClassName||this.GetElementHandle().style.setProperty("outline","none"),this.GetIsLinked()||(this.GetElementHandle().style.setProperty("user-select","none"),this.GetElementHandle().style.setProperty("white-space","normal"),0===this.FElementPosition&&(""===this.FElementButtonClassName&&(t.style.setProperty("float","left"),2!==this.FHeightStyle?t.style.setProperty("height","100%"):t.style.removeProperty("height"),t.style.setProperty("vertical-align","middle"),e.TRadioGroup.isPrototypeOf(this.FParent)||(t.style.setProperty("margin-top","0px"),t.style.setProperty("margin-bottom","0px"))),a=null!=(n=pas["WEBLib.Forms"].GetParentForm(this))&&1===n.FCSSLibrary,(""===this.FElementLabelClassName||a)&&((i=this.GetContainer().lastElementChild).style.setProperty("vertical-align","middle"),i.style.setProperty("min-height","100%"),i.style.setProperty("height","100%"),e.TRadioGroup.isPrototypeOf(this.FParent)||i.style.setProperty("position","absolute"),i.style.setProperty("overflow","hidden"),i.style.setProperty("display","inline-flex"),i.style.setProperty("align-items","center")))))},this.GetRadioElement=function(){return this.GetIsLinked()?this.GetElementHandle():this.GetContainer().firstElementChild},this.KeyPress=function(e){pas["WEBLib.Controls"].TControl.KeyPress.apply(this,arguments)," "===e.get()&&(this.GetRadioElement().checked=!0)},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.SetColor(-1),4 in this.FComponentState&&""===this.FCaption&&this.SetCaption(this.FName),this.FGroupName="",this.SetShowFocus(!0)};var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),t.addProperty("Checked",3,rtl.boolean,"GetChecked","SetChecked",{Default:!1}),t.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor",{Default:-1}),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),t.addProperty("ElementButtonClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementButtonClassName","FElementButtonClassName"),t.addProperty("ElementLabelClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementLabelClassName","FElementLabelClassName"),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("Enabled",2,rtl.boolean,"FEnabled","SetEnabled",{Default:!0}),t.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),t.addProperty("GroupName",2,rtl.string,"FGroupName","SetGroupName"),t.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Hint",2,rtl.string,"FHint","SetHint"),t.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),t.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("Role",3,rtl.string,"GetRole","SetRole"),t.addProperty("ShowFocus",2,rtl.boolean,"FShowFocus","SetShowFocus",{Default:!1}),t.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),t.addProperty("TabOrder",2,rtl.longint,"FTabOrder","SetTabOrder"),t.addProperty("TabStop",2,rtl.boolean,"FTabStop","SetTabStop",{Default:!0}),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnKeyDown",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyDown","FOnKeyDown"),t.addProperty("OnKeyPress",0,pas["WEBLib.Controls"].$rtti.TKeyPressEvent,"FOnKeyPress","FOnKeyPress"),t.addProperty("OnKeyUp",0,pas["WEBLib.Controls"].$rtti.TKeyEvent,"FOnKeyUp","FOnKeyUp"),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),t.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),t.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),t.addProperty("OnEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnEnter","FOnEnter"),t.addProperty("OnExit",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnExit","FOnExit"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")})),this.TComboBoxStyle={0:"csDropDownList",csDropDownList:0,1:"csDropDown",csDropDown:1},this.$rtti.$Enum("TComboBoxStyle",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TComboBoxStyle}),rtl.createClass(this,"TCustomComboBox",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FItems=null,this.FItemIndex=0,this.FStyle=0,this.FOnChange=null,this.FTextHint="",this.FListName="",this.FText="",this.FHandleChangePtr=null,this.FHandleInputPtr=null,this.FHandleFocusInPtr=null,this.FHandleFocusOutPtr=null,this.FOnFocusOut=null,this.FOnFocusIn=null},this.$final=function(){this.FItems=void 0,this.FOnChange=void 0,this.FOnFocusOut=void 0,this.FOnFocusIn=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.GetText=function(){var e="",t=null,i="",a="";return e="",1===this.FStyle?null!=this.GetElementHandle()&&(e=this.GetElementHandle().value):this.GetItemIndex()>=0&&(this.GetItemIndex()0&&(n=pas.System.Copy(i,1,t-1),a=pas.System.Copy(i,t+1,65535)),s.setAttribute("value",a),s.innerHTML=n,o.appendChild(s)}else{if("SELECT"!==this.GetElementHandle().tagName)return;for(var h=this.GetContainer().options.length-1;h>=0;h--)e=h,this.GetContainer().remove(e);this.AddTextHint();for(var c=0,d=this.FItems.GetCount()-1;c<=d;c++)e=c,i=this.FItems.Get(e),s=document.createElement("OPTION"),a=i,n=i,(t=pas.System.Pos(this.FItems.GetNameValueSeparator(),i))>0&&(n=pas.System.Copy(i,1,t-1),a=pas.System.Copy(i,t+1,65535)),s.setAttribute("value",a),s.innerHTML=n,this.GetContainer().appendChild(s)}this.UpdateElement()}},this.GetItemIndex=function(){var e=0;return 1===this.FStyle?e=this.FItems.IndexOf(this.GetText()):(e=this.FItemIndex,null!=this.GetContainer()&&(e=this.GetContainer().selectedIndex,""!==this.FTextHint&&(e-=1))),e},this.CreateElement=function(){var e=null;return 0===this.FStyle?e=document.createElement("SELECT"):(e=document.createElement("INPUT"),this.FListName=this.FName+"_LIST",e.setAttribute("list",this.FListName)),e},this.BindEvents=function(){pas["WEBLib.Controls"].TCustomControl.BindEvents.call(this),null!=this.GetElementHandle()&&(this.GetElementHandle().addEventListener("input",this.FHandleInputPtr),this.GetElementHandle().addEventListener("change",this.FHandleChangePtr),this.GetElementHandle().addEventListener("focusin",this.FHandleFocusInPtr),this.GetElementHandle().addEventListener("focusout",this.FHandleFocusOutPtr))},this.UnbindEvents=function(){pas["WEBLib.Controls"].TControl.UnbindEvents.call(this),null!=this.GetElementHandle()&&(this.GetElementHandle().removeEventListener("input",this.FHandleInputPtr),this.GetElementHandle().removeEventListener("change",this.FHandleChangePtr),this.GetElementHandle().removeEventListener("focusin",this.FHandleFocusInPtr),this.GetElementHandle().removeEventListener("focusout",this.FHandleFocusOutPtr))},this.UpdateElementData=function(){var e=0;pas["WEBLib.Controls"].TControl.UpdateElementData.call(this),1===this.FStyle?null!=this.GetElementHandle()&&(this.GetElementHandle().value=this.FText,this.FListName=this.FName+"_LIST",this.GetElementHandle().setAttribute("list",this.FListName)):null!=this.GetElementSelectHandle()&&(e=0,""!==this.FTextHint&&(e=1),this.GetElementSelectHandle().selectedIndex=this.FItemIndex+e,this.GetElementSelectHandle().setAttribute("role","combobox"))},this.UpdateParent=function(){pas["WEBLib.Controls"].TControl.UpdateParent.call(this),this.DoUpdateList()},this.SetItems=function(e){this.FItems.Assign(e)},this.SetItemIndex=function(e){this.FItemIndex!==e&&(this.FItemIndex=e,e>=0&&this.FStyle in rtl.createSet(1,0)&&e0&&this.FColumns!==e&&(this.FColumns=e,this.DoUpdateList())},this.SetItems=function(e){this.FItems.Assign(e),this.DoUpdateList()},this.DoUpdateList=function(){var t,i,a=0,n="",s=null,o=0,r=0,l=0,h=0,c=null,d=[];if(null!=this.GetContainer()&&0!==this.FItems.GetCount()){i=Math.round(2.5*this.FFont.FSize),t=rtl.trunc(this.GetWidth()/this.FColumns),o=""!==this.FCaption?this.FFont.FSize:4,r=0,l=0,this.FOldCount>0&&(d=rtl.arraySetLength(d,!1,this.FOldCount));for(var m=0,p=this.FOldCount-1;m<=p;m++)a=m,s=rtl.getObject(this.FControls$1.Get(a)),e.TRadioButton.isPrototypeOf(s)&&(d[a]=rtl.as(s,e.TRadioButton).GetChecked()),e.TCheckBox.isPrototypeOf(s)&&(d[a]=rtl.as(s,e.TCheckBox).GetChecked()),s=rtl.freeLoc(s);for(this.FControls$1.Clear();this.GetContainer().childElementCount>0;)this.GetContainer().removeChild(this.GetContainer().firstChild);""!==this.FCaption&&(c=document.createElement("LEGEND"),this.GetElementHandle().appendChild(c),c.innerHTML=this.FCaption,c.setAttribute("class","w-auto "+this.FElementLegendClassName),c.style.setProperty("float","none"),pas["WEBLib.Controls"].SetHTMLElementFont(c,this.FFont,!(0===this.FElementFont&&""===this.FElementClassName))),""!==this.FElementGroupClassName?this.GetElementHandle().setAttribute("class",this.FElementGroupClassName):this.GetElementHandle().setAttribute("class","border p-2"),this.GetContainer().style.setProperty("margin","0px");for(var u=0,g=this.FItems.GetCount()-1;u<=g;u++)a=u,h=o+l*i,n=this.FItems.Get(a),(s=this.CreateGroupControl(4+r*t,h,a,n,this.FControlPosition,this.GetGroupControlState(a),!0)).SetEnabled(this.FEnabled),this.FControls$1.Add(s),a<=this.FOldCount&&(e.TRadioButton.isPrototypeOf(s)&&rtl.as(s,e.TRadioButton).SetChecked(d[a]),e.TCheckBox.isPrototypeOf(s)&&rtl.as(s,e.TCheckBox).SetChecked(d[a])),this.GetIsLinked()||(s.GetContainer().style.setProperty("float","left"),s.GetContainer().style.setProperty("width",pas.SysUtils.IntToStr(pas.System.Trunc(100/this.FColumns)-5)+"%"),this.FTabStop?(s.GetContainer().setAttribute("tabindex",pas.SysUtils.TIntegerHelper.ToString$1.call({p:this,get:function(){return this.p.FTabOrder},set:function(e){this.p.FTabOrder=e}})),this.GetContainer().setAttribute("tabindex","-1")):s.GetContainer().setAttribute("tabindex","-1")),a%this.FColumns==0&&s.GetContainer().style.setProperty("clear","left"),this.GetElementHandle().appendChild(s.GetContainer()),r=0?(null!=(t=document.getElementById(this.GetID()+pas.SysUtils.IntToStr(this.GetItemIndex())+"rd"))&&(t.checked=!1),this.FItemIndex=-1):(this.FItemIndex=e,e>=0&&e0&&null!=(e=this.GetGroupControl(0))&&e.SetFocus()},this.$rtti.addProperty("OnCheckClick",0,e.$rtti.TCheckClickEvent,"FOnCheckClick","FOnCheckClick")})),this.GetAutoCompletionName=function(e){var t="";return 0===e?t="":1===e?t="honorific-prefix":2===e?t="given-name":3===e?t="additional-name":4===e?t="family-name":5===e?t="honorific-suffix":6===e?t="nickname":7===e?t="email":8===e?t="username":9===e?t="new-password":10===e?t="current-password":11===e?t="organization-title":12===e?t="organization":13===e?t="street-address":14===e?t="address-line1":15===e?t="address-line2":16===e?t="address-line3":17===e?t="address-level1":18===e?t="address-level2":19===e?t="address-level3":20===e?t="address-level4":21===e?t="country":22===e?t="country-name":23===e?t="postal-code":24===e?t="cc-name":25===e?t="cc-given-name":26===e?t="cc-additional-name":27===e?t="cc-family-name":28===e?t="cc-number":29===e?t="cc-exp":30===e?t="cc-exp-month":31===e?t="cc-exp-year":32===e?t="cc-csc":33===e?t="cc-type":34===e?t="transaction-currency":35===e?t="transaction-amount":36===e?t="language":37===e?t="bday":38===e?t="bday-day":39===e?t="bday-month":40===e?t="bday-year":41===e?t="sex":42===e?t="tel":43===e?t="tel-country-code":44===e?t="tel-national":45===e?t="tel-area-code":46===e?t="tel-local":47===e?t="tel-extension":48===e?t="impp":49===e?t="url":50===e?t="photo":52===e&&(t="nope"),t}})),rtl.module("WEBLib.ExtCtrls",["System","Classes","SysUtils","Types","WEBLib.Controls","WEBLib.StdCtrls","WEBLib.Graphics","Web","JS","WEBLib.WebTools","WEBLib.Menus","WEBLib.REST"],(function(){"use strict";var e=this;rtl.createClass(this,"TCustomImageControl",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FURL="",this.FPicture=null,this.FAutoSize=!1,this.FOnLoaded=null,this.FOnError=null,this.FImageLoadPtr=null,this.FImageErrorPtr=null,this.FImageLoaded=null,this.FImageError=null},this.$final=function(){this.FPicture=void 0,this.FOnLoaded=void 0,this.FOnError=void 0,this.FImageLoaded=void 0,this.FImageError=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.SetURL=function(e){this.FURL=e,this.SetContainerURL(e)},this.HandleImageLoad=function(e){var t,i,a;return i=(t=this.GetElementHandle()).naturalWidth,a=t.naturalHeight,this.FPicture.FWidth=i,this.FPicture.FHeight=a,null!=this.FOnLoaded&&this.FOnLoaded(this),null!=this.FImageLoaded&&this.FImageLoaded(e),!0,!0},this.HandleError=function(e){var t=!1,i=pas["WEBLib.Controls"].TJSEventRecord.$new(),a=pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$new();if(!0,t=!1,null!=this.FOnError&&(i.event=e,a.req=e.target,this.FOnError(this,pas["WEBLib.Controls"].TJSXMLHttpRequestRecord.$clone(a),pas["WEBLib.Controls"].TJSEventRecord.$clone(i),{get:function(){return t},set:function(e){t=e}})),null!=this.FImageError&&this.FImageError(e),!t&&!(4 in this.FComponentState))throw pas.SysUtils.Exception.$create("Create$1",["Error loading image "+this.FURL]);return!0},this.SetPicture=function(e){this.FPicture.Assign(e)},this.PictureChanged=function(e){this.SetURL(this.FPicture.FFilename),this.UpdateElement()},this.PictureDataChanged=function(e){this.SetContainerURL("data:image/png;base64,"+pas["WEBLib.WebTools"].HexImageDecodeAsBase64(this.FPicture.GetData()))},this.CreateElement=function(){var e=null;return e=document.createElement("IMG"),""!==this.FURL&&e.setAttribute("src",this.FURL),e},this.UpdateElement=function(){pas["WEBLib.Controls"].TControl.UpdateElement.call(this),this.FAutoSize&&null!=this.GetElementHandle()&&(this.GetElementHandle().style.removeProperty("width"),this.GetElementHandle().style.removeProperty("height"))},this.SetContainerURL=function(e){null!=this.GetContainer()&&(""===e?this.GetContainer().removeAttribute("src"):this.GetContainer().setAttribute("src",e),this.UpdateElement())},this.BindEvents=function(){pas["WEBLib.Controls"].TCustomControl.BindEvents.call(this),null!=this.GetElementBindHandle()&&(this.GetElementBindHandle().addEventListener("load",this.FImageLoadPtr),4 in this.FComponentState||this.GetElementBindHandle().addEventListener("error",this.FImageErrorPtr))},this.UnbindEvents=function(){var e=null;pas["WEBLib.Controls"].TControl.UnbindEvents.call(this),null!=this.GetElementBindHandle()&&((e=this.GetElementBindHandle()).removeEventListener("load",this.FImageLoadPtr),4 in this.FComponentState||e.removeEventListener("error",this.FImageErrorPtr))},this.ClearMethodPointers=function(){pas["WEBLib.Controls"].TControl.ClearMethodPointers.call(this),this.FImageLoadPtr=null,this.FImageErrorPtr=null},this.GetMethodPointers=function(){pas["WEBLib.Controls"].TControl.GetMethodPointers.call(this),null===this.FImageLoadPtr&&(this.FImageLoadPtr=rtl.createCallback(this,"HandleImageLoad")),null===this.FImageErrorPtr&&(this.FImageErrorPtr=rtl.createCallback(this,"HandleError"))},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FPicture=pas["WEBLib.Graphics"].TURLPicture.$create("Create"),this.FPicture.FOnChange=rtl.createCallback(this,"PictureChanged"),this.FPicture.FOnDataChange=rtl.createCallback(this,"PictureDataChanged"),this.SetColor(-1),this.SetTabStop(!1),4 in this.FComponentState&&(this.SetWidth(400),this.SetHeight(300))},this.Destroy=function(){rtl.free(this,"FPicture"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)};var e=this.$rtti;e.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),e.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),e.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),e.addProperty("AutoSize",0,rtl.boolean,"FAutoSize","FAutoSize",{Default:!1}),e.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),e.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),e.addProperty("ElementClassName",2,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementClassName","SetElementClassName"),e.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),e.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),e.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),e.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),e.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),e.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),e.addProperty("ShowHint",2,rtl.boolean,"FShowHint","SetShowHint",{Default:!1}),e.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),e.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),e.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),e.addProperty("OnError",0,pas["WEBLib.Controls"].$rtti.THTTPErrorEvent,"FOnError","FOnError"),e.addProperty("OnLoaded",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnLoaded","FOnLoaded"),e.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),e.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),e.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),e.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")})),rtl.createClass(this,"TImageControl",this.TCustomImageControl,(function(){var e=this.$rtti;e.addProperty("Picture",2,pas["WEBLib.Graphics"].$rtti.TURLPicture,"FPicture","SetPicture"),e.addProperty("URL",2,rtl.string,"FURL","SetURL")})),rtl.createClass(this,"TCustomPanel",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FAutoSize=!1,this.FIsSizing=!1,this.FPadding=null,this.FShowCaption=!1,this.FLabel=null,this.FPanelBody=null,this.FElementBodyClassName="",this.FAlignment=0},this.$final=function(){this.FPadding=void 0,this.FLabel=void 0,this.FPanelBody=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.SetShowCaption=function(e){this.FShowCaption!==e&&(this.FShowCaption=e,this.UpdateElementVisual())},this.SetPadding=function(e){this.FPadding.Assign(e)},this.SetAlignment=function(e){this.FAlignment!==e&&(this.FAlignment=e,this.UpdateElement())},this.CreateElement=function(){var e=null;return e=document.createElement("SPAN"),this.FPanelBody=document.createElement("DIV"),this.FPanelBody.setAttribute("class","card-body"),e.appendChild(this.FPanelBody),e},this.SetCaption=function(e){pas["WEBLib.Controls"].TCustomControl.SetCaption.call(this,e),null!=this.GetElementHandle()&&this.FShowCaption&&(null==this.FLabel?(this.FLabel=document.createElement("SPAN"),this.FLabel.innerHTML=this.FCaption,null!=this.GetChildContainer()?this.GetChildContainer().appendChild(this.FLabel):this.GetElementHandle().appendChild(this.FLabel),this.UpdateElementVisual()):this.FLabel.innerHTML=this.FCaption)},this.SetBorderStyle=function(e){pas["WEBLib.Controls"].TCustomControl.SetBorderStyle.apply(this,arguments),this.UpdateElement()},this.SetAutoSize=function(e){this.FAutoSize=e,this.FAutoSize&&!this.IsUpdating()&&this.DoAutoSize()},this.UpdateElementVisual=function(){if(pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),null!=this.GetElementHandle()){if(this.GetIsLinked()||(this.FAutoSize?(this.GetElementHandle().style.setProperty("overflow",""),this.GetElementHandle().style.setProperty("white-space","normal"),this.FVisible&&this.GetElementHandle().style.setProperty("display","inline")):(this.GetElementHandle().style.setProperty("overflow","hidden"),this.GetElementHandle().style.setProperty("white-space","nowrap"),this.FVisible&&this.GetElementHandle().style.setProperty("display","inline-block")),this.GetElementHandle().style.setProperty("padding-left",pas.SysUtils.IntToStr(this.FPadding.FLeft)+"px"),this.GetElementHandle().style.setProperty("padding-right",pas.SysUtils.IntToStr(this.FPadding.FRight)+"px"),this.GetElementHandle().style.setProperty("padding-top",pas.SysUtils.IntToStr(this.FPadding.FTop)+"px"),this.GetElementHandle().style.setProperty("padding-bottom",pas.SysUtils.IntToStr(this.FPadding.FBottom)+"px"),this.GetElementHandle().style.setProperty("box-sizing","border-box"),""!==this.FElementBodyClassName?this.GetChildContainer().setAttribute("class",this.FElementBodyClassName):this.GetChildContainer().removeAttribute("class")),null!=this.FLabel&&(this.FShowCaption?this.FLabel.innerHTML=this.FCaption:this.FLabel.innerHTML="",this.FVisible)){this.GetElementHandle().style.setProperty("display","flex");var e=this.FAlignment;0===e?this.GetElementHandle().style.setProperty("justify-content","flex-start"):2===e?this.GetElementHandle().style.setProperty("justify-content","center"):1===e&&this.GetElementHandle().style.setProperty("justify-content","flex-end"),this.GetElementHandle().style.setProperty("align-items","center")}this.GetElementHandle().style.setProperty("user-select",""),0===this.FCursor&&this.GetElementHandle().style.setProperty("cursor","")}},this.GetOuterWidth=function(){return pas["WEBLib.Controls"].TControl.GetOuterWidth.call(this)},this.GetOuterHeight=function(){return pas["WEBLib.Controls"].TControl.GetOuterHeight.call(this)},this.GetChildContainer=function(){return null!=this.FPanelBody?this.FPanelBody:pas["WEBLib.Controls"].TControl.GetChildContainer.call(this)},this.RegisterParent=function(e){pas["WEBLib.Controls"].TControl.RegisterParent.apply(this,arguments),this.FAutoSize&&this.DoAutoSize()},this.UnRegisterParent=function(e){pas["WEBLib.Controls"].TControl.UnRegisterParent.apply(this,arguments),this.FAutoSize&&this.DoAutoSize()},this.UpdatePadding=function(e){e.Left=this.FPadding.FLeft,e.Top=this.FPadding.FTop,e.Right=e.Right-this.FPadding.FRight,e.Bottom=e.Bottom-this.FPadding.FBottom},this.DoAutoSize=function(){var e=0,t=0,i=0,a=0,n=0,s=null,o=null;if(!this.FIsSizing){if(this.FIsSizing=!0,1===this.FWidthStyle&&1===this.FHeightStyle){a=0,n=0,t=65535,i=65535;for(var r=0,l=this.GetControlsCount()-1;r<=l;r++)e=r,1===this.GetControls(e).FWidthStyle?(this.GetControls(e).GetLeft()+this.GetControls(e).GetWidth()>a&&(a=this.GetControls(e).GetLeft()+this.GetControls(e).GetWidth()),this.GetControls(e).GetLeft()a&&(a=Math.round(s.x-this.GetLeft()+s.width)),t=0),1===this.GetControls(e).FHeightStyle?(this.GetControls(e).GetTop()+this.GetControls(e).GetHeight()>n&&(n=this.GetControls(e).GetTop()+this.GetControls(e).GetHeight()),this.GetControls(e).GetTop()n&&(n=Math.round(s.y-this.GetTop()+s.height)),i=0);if(4 in this.FComponentState&&(0===this.GetControlsCount()||0===a||0===n))return;1===this.FBorderStyle&&(a+=1,n+=1);for(var h=0,c=this.GetControlsCount()-1;h<=c;h++)e=h,this.GetControls(e).SetLeft(this.GetControls(e).GetLeft()-t),this.GetControls(e).SetTop(this.GetControls(e).GetTop()-i);this.SetWidth(a-t),this.SetHeight(n-i)}else this.SetWidth(-1),this.SetHeight(-1);this.UpdateElement(),this.FIsSizing=!1}},this.AlignControl=function(e){pas["WEBLib.Controls"].TControl.AlignControl.apply(this,arguments),this.FAutoSize&&this.DoAutoSize()},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),4 in this.FComponentState&&(this.FEnablePropagation=!0),this.FAutoSize=!1,this.FAlignment=2,this.SetColor(15790320),this.SetTabStop(!1),this.FCustomBorder=!0,this.SetShowCaption(!0),this.FControlStyle=rtl.unionSet(this.FControlStyle,rtl.createSet(0)),this.FLabel=null,this.FPadding=pas["WEBLib.Controls"].TPadding.$create("Create$1"),4 in this.FComponentState&&(this.SetWidth(400),this.SetHeight(300))},this.Destroy=function(){rtl.free(this,"FPadding"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)},this.EndUpdate=function(){pas["WEBLib.Controls"].TCustomControl.EndUpdate.call(this),this.FAutoSize&&this.SetAutoSize(!0)}})),rtl.createClass(this,"TPanel",this.TCustomPanel,(function(){var e=this.$rtti;e.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),e.addProperty("Alignment",2,pas.Classes.$rtti.TAlignment,"FAlignment","SetAlignment",{Default:pas.Classes.TAlignment.taCenter}),e.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),e.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),e.addProperty("AutoSize",2,rtl.boolean,"FAutoSize","SetAutoSize",{Default:!1}),e.addProperty("BorderColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FBorderColor","SetBorderColor",{Default:12632256}),e.addProperty("BorderStyle",2,pas["WEBLib.Controls"].$rtti.TBorderStyle,"FBorderStyle","SetBorderStyle",{Default:pas["WEBLib.Controls"].TBorderStyle.bsSingle}),e.addProperty("Caption",2,rtl.string,"FCaption","SetCaption"),e.addProperty("ChildOrder",2,rtl.longint,"FChildOrder","SetChildOrderEx",{Default:0}),e.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),e.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),e.addProperty("ElementBodyClassName",0,pas["WEBLib.Controls"].$rtti.TElementClassName,"FElementBodyClassName","FElementBodyClassName"),e.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),e.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),e.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),e.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),e.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),e.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),e.addProperty("Padding",2,pas["WEBLib.Controls"].$rtti.TPadding,"FPadding","SetPadding"),e.addProperty("ParentFont",2,rtl.boolean,"FParentFont","SetParentFont",{Default:!0}),e.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),e.addProperty("Role",3,rtl.string,"GetRole","SetRole"),e.addProperty("ShowCaption",2,rtl.boolean,"FShowCaption","SetShowCaption",{Default:!0}),e.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),e.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),e.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),e.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),e.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),e.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),e.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag"),e.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),e.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),e.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),e.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel")})),rtl.createClass(this,"TScrollBox",this.TCustomPanel,(function(){this.$init=function(){e.TCustomPanel.$init.call(this),this.FAutoScroll=!1,this.FScrollBars=0,this.FScrollPtr=null,this.FOnScroll=null,this.FVertScrollBar=null,this.FHorzScrollBar=null},this.$final=function(){this.FOnScroll=void 0,this.FVertScrollBar=void 0,this.FHorzScrollBar=void 0,e.TCustomPanel.$final.call(this)},this.SetScrollBars=function(e){this.FScrollBars!==e&&(this.FScrollBars=e,this.UpdateElement())},this.UpdateElement=function(){if(pas["WEBLib.Controls"].TControl.UpdateElement.call(this),null!=this.GetElementHandle()&&!this.IsUpdating()){var e=this.FScrollBars;0===e?this.GetElementHandle().style.setProperty("overflow","hidden"):2===e?(this.GetElementHandle().style.removeProperty("overflow"),this.GetElementHandle().style.setProperty("overflow-x","hidden"),this.GetElementHandle().style.setProperty("overflow-y","auto")):1===e?(this.GetElementHandle().style.removeProperty("overflow"),this.GetElementHandle().style.setProperty("overflow-x","auto"),this.GetElementHandle().style.setProperty("overflow-y","hidden")):3===e&&this.GetElementHandle().style.setProperty("overflow","auto"),this.FVisible&&!this.GetIsLinked()&&this.GetElementHandle().style.setProperty("display","inline-block")}},this.SetAutoScroll=function(e){this.FAutoScroll=e},this.GetClientRect=function(){var e=pas.Types.TRect.$new(),t=0,i=0;return t=0,i=0,this.GetElementHandle().scrollHeight>this.GetElementHandle().clientHeight&&this.FScrollBars in rtl.createSet(3,2)&&(t=16),this.GetElementHandle().scrollWidth>this.GetElementHandle().clientWidth&&this.FScrollBars in rtl.createSet(3,1)&&(i=16),e.$assign(pas.Types.Rect(0,0,this.GetElementHandle().clientWidth-t,this.GetElementHandle().clientHeight-i)),e},this.HandleDoScroll=function(e){return this.DoScroll(),!0,!0},this.DoScroll=function(){null!=this.FOnScroll&&this.FOnScroll(this)},this.ClearMethodPointers=function(){pas["WEBLib.Controls"].TControl.ClearMethodPointers.call(this),this.FScrollPtr=null},this.GetMethodPointers=function(){pas["WEBLib.Controls"].TControl.GetMethodPointers.call(this),null===this.FScrollPtr&&(this.FScrollPtr=rtl.createCallback(this,"HandleDoScroll"))},this.BindEvents=function(){pas["WEBLib.Controls"].TCustomControl.BindEvents.call(this),null!=this.GetElementBindHandle()&&this.GetElementBindHandle().addEventListener("scroll",this.FScrollPtr)},this.UnbindEvents=function(){pas["WEBLib.Controls"].TControl.UnbindEvents.call(this),null!=this.GetElementBindHandle()&&this.GetElementBindHandle().removeEventListener("scroll",this.FScrollPtr)},this.CreateInitialize=function(){e.TCustomPanel.CreateInitialize.call(this),this.FAutoScroll=!0,this.FScrollBars=3,this.FHorzScrollBar=pas["WEBLib.Controls"].TControlScrollBar.$create("Create$1",[this,0]),this.FVertScrollBar=pas["WEBLib.Controls"].TControlScrollBar.$create("Create$1",[this,1])},this.Destroy=function(){rtl.free(this,"FHorzScrollBar"),rtl.free(this,"FVertScrollBar"),e.TCustomPanel.Destroy.call(this)},this.EndUpdate=function(){e.TCustomPanel.EndUpdate.call(this),this.AlignControl(this),this.AlignControl(this)};var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("AutoScroll",2,rtl.boolean,"FAutoScroll","SetAutoScroll"),t.addProperty("BorderStyle",2,pas["WEBLib.Controls"].$rtti.TBorderStyle,"FBorderStyle","SetBorderStyle",{Default:pas["WEBLib.Controls"].TBorderStyle.bsSingle}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("Role",3,rtl.string,"GetRole","SetRole"),t.addProperty("ScrollBars",2,pas["WEBLib.Controls"].$rtti.TScrollStyle,"FScrollBars","SetScrollBars"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),t.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnResize",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnResize","FOnResize"),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnScroll",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnScroll","FOnScroll"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag"),t.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),t.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),t.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),t.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel")})),rtl.createClass(this,"TSplitter",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FLayer$1=null,this.FTouched=!1,this.FFirstMove=!1,this.FSplitControl=null,this.FSizing=!1,this.FSizingX=0,this.FSizingY=0,this.FOriginalWidth=0,this.FOriginalHeight=0,this.FGripColor=0,this.FOnMoved=null,this.FOnMove=null},this.$final=function(){this.FLayer$1=void 0,this.FSplitControl=void 0,this.FOnMoved=void 0,this.FOnMove=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.SetGripColor=function(e){this.FGripColor!==e&&(this.FGripColor=e,this.Invalidate())},this.CreateElement=function(){return pas["WEBLib.Controls"].TCustomControl.CreateElement.call(this)},this.UpdateElement=function(){pas["WEBLib.Controls"].TControl.UpdateElement.call(this)},this.UpdateElementSize=function(){pas["WEBLib.Controls"].TControl.UpdateElementSize.call(this)},this.ColorChanging=function(){pas["WEBLib.Controls"].TControl.ColorChanging.call(this),this.Invalidate()},this.DoSizeStart=function(e,t){var i=pas.Types.TRect.$new(),a=pas.Types.TRect.$new(),n=0,s=null,o=null;if(this.FSizing=!0,i.$assign(pas.Types.Rect(this.GetLeft(),this.GetTop(),this.GetLeft()+this.GetWidth(),this.GetTop()+this.GetHeight())),null!=this.FParent)for(var r=0,l=this.FParent.GetControlsCount()-1;r<=l;r++)if(n=r,(s=this.FParent.GetControls(n)).FAlign===this.FAlign&&s!==this){if(a.$assign(pas.Types.Rect(s.GetLeft(),s.GetTop(),s.GetLeft()+s.GetWidth(),s.GetTop()+s.GetHeight())),3===this.FAlign&&a.Right-i.Left<4){this.FSplitControl=s,this.FOriginalWidth=this.FSplitControl.GetWidth(),this.FSizing=!0,this.FSizingX=e,this.FSizingY=t;break}if(4===this.FAlign&&a.Left-i.Right<4){this.FSplitControl=s,this.FOriginalWidth=this.FSplitControl.GetWidth(),this.FSizing=!0,this.FSizingX=e,this.FSizingY=t;break}if(1===this.FAlign&&a.Bottom-i.Top<4){this.FSplitControl=s,this.FOriginalHeight=this.FSplitControl.GetHeight(),this.FSizing=!0,this.FSizingX=e,this.FSizingY=t;break}if(2===this.FAlign&&a.Top-i.Bottom<4){this.FSplitControl=s,this.FOriginalHeight=this.FSplitControl.GetHeight(),this.FSizing=!0,this.FSizingX=e,this.FSizingY=t;break}}this.FLayer$1=document.createElement("SPAN"),document.body.appendChild(this.FLayer$1),(o=this.FLayer$1).style.setProperty("top","0"),o.style.setProperty("left","0"),o.style.setProperty("right","0"),o.style.setProperty("bottom","0"),o.style.setProperty("z-index","99999999"),o.style.setProperty("webkit-user-select","none"),o.style.setProperty("moz-user-select","none"),o.style.setProperty("khtml-user-select","none"),o.style.setProperty("ms-user-select","none"),o.style.setProperty("user-select","none"),o.style.setProperty("position","absolute"),this.FAlign in rtl.createSet(3,4)&&o.style.setProperty("cursor","col-resize"),this.FAlign in rtl.createSet(1,2)&&o.style.setProperty("cursor","row-resize"),this.FFirstMove=!0,this.FSizing=!0,o.addEventListener("mousemove",rtl.createCallback(this,"HandleDocDoMouseMove")),o.addEventListener("mouseup",rtl.createCallback(this,"HandleDocDoMouseUp")),o.addEventListener("touchmove",rtl.createCallback(this,"HandleDocDoTouchMove")),o.addEventListener("touchend",rtl.createCallback(this,"HandleDocDoTouchEnd"))},this.HandleDoTouchStart=function(e){var t=0,i=0,a=null;return this.StopPropagation(),this.PreventDefault(),e.touches.length>0&&(a=e.touches.item(0),this.FTouched=!0,this.Invalidate(),this.Invalidate(),this.XYToClient(a.clientX,a.clientY,{get:function(){return t},set:function(e){t=e}},{get:function(){return i},set:function(e){i=e}}),this.DoSizeStart(Math.round(t),Math.round(i))),!1,!1},this.HandleDocDoMouseMove=function(e){var t=0,i=0;return this.FSizing&&null!=this.FSplitControl&&(this.FFirstMove?(this.FSizingX=e.clientX,this.FSizingY=e.clientY,this.FFirstMove=!1):(t=Math.round(e.clientX-this.FSizingX),i=Math.round(e.clientY-this.FSizingY),3===this.FAlign&&this.FSplitControl.SetWidth(this.FOriginalWidth+t),4===this.FAlign&&this.FSplitControl.SetWidth(this.FOriginalWidth-t),1===this.FAlign&&this.FSplitControl.SetHeight(this.FOriginalHeight+i),2===this.FAlign&&this.FSplitControl.SetHeight(this.FOriginalHeight-i),this.DoRealign(),null!=this.FOnMove&&this.FOnMove(this))),!0,!0},this.HandleDocDoMouseUp=function(e){return this.FSizing=!1,this.FSplitControl=null,this.FFirstMove=!0,this.FLayer$1.parentNode.removeChild(this.FLayer$1),!0,null!=this.FOnMoved&&this.FOnMoved(this),!0},this.HandleDocDoTouchMove=function(e){var t=null,i=0,a=0;return this.StopPropagation(),e.touches.length>0&&(t=e.touches.item(0),this.FSizing&&null!=this.FSplitControl&&(this.FFirstMove?(this.FSizingX=t.clientX,this.FSizingY=t.clientY,this.FFirstMove=!1):(i=Math.round(t.clientX-this.FSizingX),a=Math.round(t.clientY-this.FSizingY),3===this.FAlign&&this.FSplitControl.SetWidth(this.FOriginalWidth+i),4===this.FAlign&&this.FSplitControl.SetWidth(this.FOriginalWidth-i),1===this.FAlign&&this.FSplitControl.SetHeight(this.FOriginalHeight+a),2===this.FAlign&&this.FSplitControl.SetHeight(this.FOriginalHeight-a),this.DoRealign(),null!=this.FOnMove&&this.FOnMove(this)))),!0,!0},this.HandleDocDoTouchEnd=function(e){return this.FTouched=!1,this.Invalidate(),this.FSizing=!1,this.FSplitControl=null,this.FFirstMove=!0,this.FLayer$1.parentNode.removeChild(this.FLayer$1),!0,null!=this.FOnMoved&&this.FOnMoved(this),!0},this.DoMouseEnter=function(){pas["WEBLib.Controls"].TControl.DoMouseEnter.call(this),this.FAlign in rtl.createSet(3,4)&&this.SetControlCursor(14),this.FAlign in rtl.createSet(1,2)&&this.SetControlCursor(15)},this.MouseUp=function(e,t,i,a){pas["WEBLib.Controls"].TControl.MouseUp.apply(this,arguments),this.FSizing=!1,this.FSplitControl=null},this.MouseDown=function(e,t,i,a){pas["WEBLib.Controls"].TControl.MouseDown.apply(this,arguments),this.DoSizeStart(i,a)},this.Paint=function(){var e=0,t=0,i=0,a=0,n=0;this.FTouched?(this.GetCanvas().FBrush.FColor=8421504,this.GetCanvas().FPen.SetColor(8421504)):(this.GetCanvas().FBrush.FColor=this.FColor,this.GetCanvas().FPen.SetColor(this.FColor)),this.GetCanvas().FBrush.FStyle=0,this.GetCanvas().Rectangle$2(this.GetClientRect()),this.FAlign in rtl.createSet(3,4)&&(t=0,a=6,i=rtl.trunc(this.GetHeight()/2)-9,e=rtl.trunc(this.GetWidth()/2)),this.FAlign in rtl.createSet(1,2)&&(t=6,a=0,e=rtl.trunc(this.GetWidth()/2)-9,i=rtl.trunc(this.GetHeight()/2)-1),this.GetCanvas().FBrush.FColor=this.FGripColor,this.GetCanvas().FPen.SetColor(this.FGripColor);for(n=0;n<=2;n++)this.GetCanvas().Rectangle$1(e,i,e+2,i+2),e+=t,i+=a},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.SetControlCursor(14),4 in this.FComponentState&&(this.SetWidth(6),this.SetHeight(100)),this.SetAlign(3),this.FSplitControl=null,this.SetGripColor(16777215)};var e=this.$rtti;e.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),e.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),e.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),e.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),e.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),e.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),e.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),e.addProperty("GripColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FGripColor","SetGripColor",{Default:16777215}),e.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),e.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),e.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),e.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),e.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),e.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),e.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel"),e.addProperty("OnMove",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMove","FOnMove"),e.addProperty("OnMoved",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMoved","FOnMoved")})),this.TVerticalAlignment={0:"vaTop",vaTop:0,1:"vaCenter",vaCenter:1,2:"vaBottom",vaBottom:2},this.$rtti.$Enum("TVerticalAlignment",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TVerticalAlignment}),this.TGridPanelExpandStyle={0:"esAddRows",esAddRows:0,1:"esAddColumns",esAddColumns:1},this.$rtti.$Enum("TGridPanelExpandStyle",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TGridPanelExpandStyle}),rtl.createClass(this,"TGridPanelRow",pas.Classes.TCollectionItem,(function(){this.$init=function(){pas.Classes.TCollectionItem.$init.call(this),this.FSizeStyle=0,this.FValue=0,this.FMarginBottom=0,this.FMarginTop=0,this.FAlignment=0,this.FElementClassName=""},this.SetMarginBottom=function(e){this.FMarginBottom!==e&&(this.FMarginBottom=e,this.FCollection.Update(this))},this.SetMarginTop=function(e){this.FMarginTop!==e&&(this.FMarginTop=e,this.FCollection.Update(this))},this.SetSizeStyle=function(e){this.FSizeStyle!==e&&(this.FSizeStyle=e,this.FCollection.Update(this))},this.SetValue=function(e){this.FValue!==e&&(this.FValue=e,this.FCollection.Update(this))},this.HeightAttribute=function(){var e="";e="";var t=this.FSizeStyle;return 0===t?e=pas.SysUtils.IntToStr(this.FValue)+"%":1===t&&(e=pas.SysUtils.IntToStr(this.FValue)+"px"),e},this.Create$1=function(e){return pas.Classes.TCollectionItem.Create$1.apply(this,arguments),this.FSizeStyle=0,this.FAlignment=0,this.FMarginTop=0,this.FMarginBottom=0,this},this.Assign=function(t){e.TGridPanelRow.isPrototypeOf(t)&&(this.FAlignment=rtl.as(t,e.TGridPanelRow).FAlignment,this.FSizeStyle=rtl.as(t,e.TGridPanelRow).FSizeStyle,this.FElementClassName=rtl.as(t,e.TGridPanelRow).FElementClassName,this.FValue=rtl.as(t,e.TGridPanelRow).FValue,this.FMarginTop=rtl.as(t,e.TGridPanelRow).FMarginTop,this.FMarginBottom=rtl.as(t,e.TGridPanelRow).FMarginBottom)};var t=this.$rtti;t.addMethod("Create$1",2,[["ACollection",pas.Classes.$rtti.TCollection]]),t.addProperty("Alignment",0,e.$rtti.TVerticalAlignment,"FAlignment","FAlignment",{Default:e.TVerticalAlignment.vaTop}),t.addProperty("ElementClassName",0,rtl.string,"FElementClassName","FElementClassName"),t.addProperty("MarginTop",2,rtl.longint,"FMarginTop","SetMarginTop"),t.addProperty("MarginBottom",2,rtl.longint,"FMarginBottom","SetMarginBottom"),t.addProperty("SizeStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FSizeStyle","SetSizeStyle"),t.addProperty("Value",2,rtl.longint,"FValue","SetValue")})),rtl.createClass(this,"TGridPanelRows",pas.Classes.TOwnedCollection,(function(){this.$init=function(){pas.Classes.TOwnedCollection.$init.call(this),this.FOnChange=null},this.$final=function(){this.FOnChange=void 0,pas.Classes.TOwnedCollection.$final.call(this)},this.GetItem$1=function(e){return this.GetItem(e)},this.Update=function(e){pas.Classes.TCollection.Update.apply(this,arguments),null!=this.FOnChange&&this.FOnChange(this)},this.Create$3=function(t){return pas.Classes.TOwnedCollection.Create$2.call(this,t,e.TGridPanelRow),this},this.Add$1=function(){return pas.Classes.TCollection.Add.call(this)},this.$rtti.addMethod("Create$3",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),rtl.createClass(this,"TGridPanelColumn",pas.Classes.TCollectionItem,(function(){this.$init=function(){pas.Classes.TCollectionItem.$init.call(this),this.FSizeStyle=0,this.FValue=0,this.FMarginLeft=0,this.FAlignment=0,this.FMarginRight=0,this.FElementClassName=""},this.SetMarginLeft=function(e){this.FMarginLeft!==e&&(this.FMarginLeft=e,this.FCollection.Update(this))},this.SetMarginRight=function(e){this.FMarginRight!==e&&(this.FMarginRight=e,this.FCollection.Update(this))},this.SetSizeStyle=function(e){this.FSizeStyle!==e&&(this.FSizeStyle=e,this.FCollection.Update(this))},this.SetValue=function(e){this.FValue!==e&&(this.FValue=e,this.FCollection.Update(this))},this.WidthAttribute=function(){var e="";e="";var t=this.FSizeStyle;return 0===t?e=pas.SysUtils.IntToStr(this.FValue)+"%":1===t&&(e=pas.SysUtils.IntToStr(this.FValue)+"px"),e},this.Create$1=function(e){return pas.Classes.TCollectionItem.Create$1.apply(this,arguments),this.FSizeStyle=0,this.FValue=0,this.FMarginLeft=0,this.FMarginRight=0,this.FAlignment=0,this},this.Assign=function(t){e.TGridPanelColumn.isPrototypeOf(t)&&(this.FAlignment=rtl.as(t,e.TGridPanelColumn).FAlignment,this.FSizeStyle=rtl.as(t,e.TGridPanelColumn).FSizeStyle,this.FElementClassName=rtl.as(t,e.TGridPanelColumn).FElementClassName,this.FValue=rtl.as(t,e.TGridPanelColumn).FValue,this.FMarginLeft=rtl.as(t,e.TGridPanelColumn).FMarginLeft,this.FMarginRight=rtl.as(t,e.TGridPanelColumn).FMarginRight)};var t=this.$rtti;t.addMethod("Create$1",2,[["ACollection",pas.Classes.$rtti.TCollection]]),t.addProperty("Alignment",0,pas.Classes.$rtti.TAlignment,"FAlignment","FAlignment",{Default:pas.Classes.TAlignment.taLeftJustify}),t.addProperty("ElementClassName",0,rtl.string,"FElementClassName","FElementClassName"),t.addProperty("MarginLeft",2,rtl.longint,"FMarginLeft","SetMarginLeft",{Default:0}),t.addProperty("MarginRight",2,rtl.longint,"FMarginRight","SetMarginRight",{Default:0}),t.addProperty("SizeStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FSizeStyle","SetSizeStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssPercent}),t.addProperty("Value",2,rtl.longint,"FValue","SetValue")})),rtl.createClass(this,"TGridPanelColumns",pas.Classes.TOwnedCollection,(function(){this.$init=function(){pas.Classes.TOwnedCollection.$init.call(this),this.FOnChange=null},this.$final=function(){this.FOnChange=void 0,pas.Classes.TOwnedCollection.$final.call(this)},this.GetItem$1=function(e){return this.GetItem(e)},this.Update=function(e){pas.Classes.TCollection.Update.apply(this,arguments),null!=this.FOnChange&&this.FOnChange(this)},this.Create$3=function(t){return pas.Classes.TOwnedCollection.Create$2.call(this,t,e.TGridPanelColumn),this},this.Add$1=function(){return pas.Classes.TCollection.Add.call(this)},this.$rtti.addMethod("Create$3",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),rtl.createClass(this,"TControlCollectionItem",pas.Classes.TCollectionItem,(function(){this.$init=function(){pas.Classes.TCollectionItem.$init.call(this),this.FControl=null,this.FRow=0,this.FColumn=0},this.$final=function(){this.FControl=void 0,pas.Classes.TCollectionItem.$final.call(this)},this.Assign=function(t){e.TControlCollectionItem.isPrototypeOf(t)&&(this.FColumn=rtl.as(t,e.TControlCollectionItem).FColumn,this.FRow=rtl.as(t,e.TControlCollectionItem).FRow,this.FControl=rtl.as(t,e.TControlCollectionItem).FControl)};var t=this.$rtti;t.addProperty("Column",0,rtl.longint,"FColumn","FColumn"),t.addProperty("Row",0,rtl.longint,"FRow","FRow"),t.addProperty("Control",0,pas["WEBLib.Controls"].$rtti.TWinControl,"FControl","FControl")})),rtl.createClass(this,"TControlCollection",pas.Classes.TOwnedCollection,(function(){this.GetItem$1=function(e){return this.GetItem(e)},this.Create$3=function(t){return pas.Classes.TOwnedCollection.Create$2.call(this,t,e.TControlCollectionItem),this},this.Add$1=function(){return pas.Classes.TCollection.Add.call(this)},this.$rtti.addMethod("Create$3",2,[["AOwner",pas.Classes.$rtti.TComponent]])})),rtl.createClass(this,"TGridPanel",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FDesignTime=!1,this.FUpdateTable=!1,this.FColCount=0,this.FRowCollection=null,this.FColumnCollection=null,this.FControlCollection=null,this.FGridLineWidth=0,this.FGridLineColor=0,this.FExpandStyle=0,this.FTbl=null,this.FTblBody=null},this.$final=function(){this.FRowCollection=void 0,this.FColumnCollection=void 0,this.FControlCollection=void 0,this.FTbl=void 0,this.FTblBody=void 0,pas["WEBLib.Menus"].TWebCustomControl.$final.call(this)},this.SetColumnCollection=function(e){this.FColumnCollection.Assign(e)},this.SetRowCollection=function(e){this.FRowCollection.Assign(e)},this.SetControlCollection=function(e){this.FControlCollection.Assign(e)},this.CreateTable=function(){var e=null,t=0,i="";this.FTbl=document.createElement("table"),this.FTbl.setAttribute("width","100%"),this.FTbl.setAttribute("height","100%"),""!==this.FElementClassName?this.FTbl.setAttribute("class",this.FElementClassName):(i=-1!==this.FGridLineColor&&this.FGridLineWidth>0?pas.SysUtils.IntToStr(this.FGridLineWidth)+"px solid "+pas["WEBLib.Graphics"].ColorToHTML(this.FGridLineColor):4 in this.FComponentState?"1px dotted gray":"0px",this.FTbl.style.setProperty("border",i),this.FTbl.style.setProperty("border-collapse","collapse")),pas["WEBLib.Controls"].SetHTMLElementColor(this.FTbl,this.FColor,!(""===this.FElementClassName&&!this.GetIsLinked())),this.FTblBody=document.createElement("tbody");for(var a=0,n=this.FRowCollection.GetCount()-1;a<=n;a++)t=a,e=this.CreateRow(t),this.FTblBody.appendChild(e);return this.FTbl.appendChild(this.FTblBody),this.FTbl},this.CreateRow=function(e){var t=null,i=null,a=0,n="";if(n=-1!==this.FGridLineColor&&this.FGridLineWidth>0?pas.SysUtils.IntToStr(this.FGridLineWidth)+"px solid "+pas["WEBLib.Graphics"].ColorToHTML(this.FGridLineColor):4 in this.FComponentState?"1px dotted gray":"0px",t=document.createElement("tr"),""===this.FElementClassName&&t.style.setProperty("border",n),e100){d=a/100;for(var u=0,g=this.FRowCollection.GetCount()-1;u<=g;u++)e=u,this.FRowCollection.GetItem$1(e).FValue=pas.System.Trunc(this.FRowCollection.GetItem$1(e).FValue/d)}c=!0,a=0;for(var S=0,F=this.FColumnCollection.GetCount()-1;S<=F;S++){if(e=S,0!==this.FColumnCollection.GetItem$1(e).FSizeStyle){c=!1;break}a+=this.FColumnCollection.GetItem$1(e).FValue}if(c&&a>100){d=a/100;for(var b=0,C=this.FColumnCollection.GetCount()-1;b<=C;b++)e=b,this.FColumnCollection.GetItem$1(e).FValue=pas.System.Trunc(this.FColumnCollection.GetItem$1(e).FValue/d)}for(n=this.FRowCollection.GetCount(),this.FColCount!==this.FColumnCollection.GetCount()&&(n=0);this.FTblBody.childNodes.length>n;)this.FTblBody.removeChild(this.FTblBody.childNodes.item(this.FTblBody.childNodes.length-1));for(;this.FTblBody.childNodes.lengtht&&h.setAttribute("height",this.FRowCollection.GetItem$1(t).HeightAttribute())):0===t&&ethis.FColumnCollection.GetCount()*this.FRowCollection.GetCount()&&(0===this.FExpandStyle?this.FRowCollection.Add$1():this.FColumnCollection.Add$1()),this.UpdateTable()}},this.TableChanged=function(e){this.UpdateTable()},this.Notification=function(e,t){var i=0,a="",n=null;if(1===t&&!(3 in this.FComponentState)){for(var s=this.FControlCollection.GetCount()-1;s>=0;s--)i=s,this.FControlCollection.GetItem$1(i).FControl===e&&(a=this.FName+"R"+pas.SysUtils.IntToStr(this.FControlCollection.GetItem$1(i).FRow)+"C"+pas.SysUtils.IntToStr(this.FControlCollection.GetItem$1(i).FColumn),(n=document.getElementById(a)).removeChild(n.firstChild),this.FControlCollection.GetItem$1(i).FControl=null,this.FControlCollection.Delete(i));this.UpdateTable()}pas["WEBLib.Menus"].TWebCustomControl.Notification.apply(this,arguments)},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FDesignTime=4 in this.FComponentState&&!(1 in this.FOwner.FComponentState||0 in this.FOwner.FComponentState),this.FEnablePropagation=!0,this.FControlStyle=rtl.unionSet(this.FControlStyle,rtl.createSet(0)),this.FUpdateTable=!0,this.FColCount=-1,this.FRowCollection=e.TGridPanelRows.$create("Create$3",[this]),this.FRowCollection.FPropName="RowCollection",this.FDesignTime&&!(0 in this.FComponentState)&&(this.FRowCollection.Add$1(),this.FRowCollection.GetItem$1(0).SetValue(100),this.FRowCollection.GetItem$1(0).SetSizeStyle(0)),this.FColumnCollection=e.TGridPanelColumns.$create("Create$3",[this]),this.FColumnCollection.FPropName="ColumnCollection",this.FDesignTime&&!(0 in this.FComponentState)&&(this.FColumnCollection.Add$1(),this.FColumnCollection.Add$1(),this.FColumnCollection.GetItem$1(0).SetValue(50),this.FColumnCollection.GetItem$1(1).SetValue(50),this.FColumnCollection.GetItem$1(0).SetSizeStyle(0),this.FColumnCollection.GetItem$1(1).SetSizeStyle(0)),this.FRowCollection.FOnChange=rtl.createCallback(this,"TableChanged"),this.FColumnCollection.FOnChange=rtl.createCallback(this,"TableChanged"),this.FControlCollection=e.TControlCollection.$create("Create$3",[this]),4 in this.FComponentState&&(this.SetWidth(400),this.SetHeight(300))},this.Destroy=function(){rtl.free(this,"FRowCollection"),rtl.free(this,"FColumnCollection"),rtl.free(this,"FControlCollection"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)},this.EndUpdate=function(){pas["WEBLib.Controls"].TCustomControl.EndUpdate.call(this),this.UpdateTable()};var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("Color",2,pas["WEBLib.Graphics"].$rtti.TColor,"FColor","SetColor"),t.addProperty("ControlCollection",2,e.$rtti.TControlCollection,"FControlCollection","SetControlCollection"),t.addProperty("ColumnCollection",2,e.$rtti.TGridPanelColumns,"FColumnCollection","SetColumnCollection"),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),t.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("ExpandStyle",0,e.$rtti.TGridPanelExpandStyle,"FExpandStyle","FExpandStyle",{Default:e.TGridPanelExpandStyle.esAddRows}),t.addProperty("GridLineWidth",0,rtl.longint,"FGridLineWidth","FGridLineWidth",{Default:0}),t.addProperty("GridLineColor",0,pas["WEBLib.Graphics"].$rtti.TColor,"FGridLineColor","FGridLineColor",{Default:0}),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("Role",3,rtl.string,"GetRole","SetRole"),t.addProperty("RowCollection",2,e.$rtti.TGridPanelRows,"FRowCollection","SetRowCollection"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag"),t.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),t.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),t.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),t.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel")})),this.TMultiMediaType={0:"mtVideo",mtVideo:0,1:"mtAudio",mtAudio:1},this.$rtti.$Enum("TMultiMediaType",{minvalue:0,maxvalue:1,ordtype:1,enumtype:this.TMultiMediaType}),this.TMultiMediaControl={0:"mcFullscreen",mcFullscreen:0,1:"mcDownload",mcDownload:1,2:"mcRemoteplayback",mcRemoteplayback:2,3:"mcPlaybackrate",mcPlaybackrate:3,4:"mcPictureInPicture",mcPictureInPicture:4},this.$rtti.$Enum("TMultiMediaControl",{minvalue:0,maxvalue:4,ordtype:1,enumtype:this.TMultiMediaControl}),this.$rtti.$Set("TMultiMediaControls",{comptype:this.$rtti.TMultiMediaControl}),this.$rtti.$Int("TMultiMediaVolume",{minvalue:0,maxvalue:100,ordtype:1}),this.TMultiMediaPreload={0:"mpAuto",mpAuto:0,1:"mpNone",mpNone:1,2:"mpMetadata",mpMetadata:2},this.$rtti.$Enum("TMultiMediaPreload",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TMultiMediaPreload}),rtl.createClass(this,"TMultimediaPlayer",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FURL="",this.FMultimediaType=0,this.FAutoPlay=!1,this.FControls$1=!1,this.FMuted=!1,this.FLoop=!1,this.FVolume=0,this.FPlaybackRate=0,this.FContextMenu=!1,this.FPoster="",this.FHideControls={},this.FPreload=0},this.$final=function(){this.FHideControls=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.SetAutoPlay=function(e){this.FAutoPlay!==e&&(this.FAutoPlay=e,this.UpdateElement())},this.SetControls=function(e){this.FControls$1!==e&&(this.FControls$1=e,this.UpdateElement())},this.SetMuted=function(e){this.FMuted!==e&&(this.FMuted=e,null!=this.GetElementHandle()&&(this.GetElementHandle().muted=e))},this.SetLoop=function(e){this.FLoop!==e&&(this.FLoop=e,null!=this.GetElementHandle()&&(this.GetElementHandle().loop=e))},this.SetURL=function(e){this.FURL!==e&&(this.FURL=e,this.UpdateElement())},this.SetVolume=function(e){this.FVolume!==e&&e>=0&&e<=100&&(this.FVolume=e,null!=this.GetElementHandle()&&(this.GetElementHandle().volume=e/100))},this.SetPlaybackRate=function(e){this.FPlaybackRate!==e&&(this.FPlaybackRate=e,this.UpdateElement())},this.SetContextMenu=function(e){this.FContextMenu!==e&&(this.FContextMenu=e,this.UpdateElement())},this.SetPoster=function(e){this.FPoster!==e&&(this.FPoster=e,null!=this.GetElementHandle()&&(this.GetElementHandle().poster=e))},this.SetHideControls=function(e){rtl.neSet(this.FHideControls,e)&&(this.FHideControls=rtl.refSet(e),this.UpdateElement())},this.SetPreload=function(e){var t="";if(this.FPreload!==e&&(this.FPreload=e,null!=this.GetElementHandle())){1===e?t="none":0===e?t="auto":2===e&&(t="metadata"),this.GetElementHandle().preload=t}},this.CreateElement=function(){var e,t=null,i="";t=0===this.FMultimediaType?document.createElement("VIDEO"):document.createElement("AUDIO"),e=document.createElement("SOURCE");var a=this.FPreload;return 1===a?i="none":0===a?i="auto":2===a&&(i="metadata"),t.defaultPlaybackRate=this.FPlaybackRate,t.preload=i,t.appendChild(e),t},this.UpdateElement=function(){var e=null,t="";function i(e){return e?"true":"false"}pas["WEBLib.Controls"].TControl.UpdateElement.call(this),null!=this.GetElementHandle()&&((e=this.GetElementHandle()).controls=this.FControls,e.defaultPlaybackRate=this.FPlaybackRate,e.playbackRate=this.FPlaybackRate,e.muted=this.FMuted,this.FControls$1?this.GetElementHandle().setAttribute("controls",""):this.GetElementHandle().removeAttribute("controls"),this.FAutoPlay?this.GetElementHandle().setAttribute("autoplay",i(this.FAutoPlay)):this.GetElementHandle().removeAttribute("autoplay"),this.FMuted?this.GetElementHandle().setAttribute("muted",i(this.FMuted)):this.GetElementHandle().removeAttribute("muted"),this.FContextMenu?this.GetElementHandle().removeAttribute("oncontextmenu"):this.GetElementHandle().setAttribute("oncontextmenu","return false;"),this.GetElementHandle().setAttribute("volume",pas["WEBLib.Utils"].FormatProp("%.2f",pas.System.VarRecs(3,this.FVolume/100))),this.GetElementHandle().setAttribute("src",this.FURL),t="",0 in this.FHideControls&&(t="nofullscreen "),1 in this.FHideControls&&(t+="nodownload "),2 in this.FHideControls&&(t+="noremoteplayback "),3 in this.FHideControls&&(t+="noplaybackrate "),""!==t?this.GetElementHandle().setAttribute("controlsList",t):this.GetElementHandle().hasAttribute("controlsList")&&this.GetElementHandle().removeAttribute("controlsList"),4 in this.FHideControls?this.GetElementHandle().setAttribute("disablePictureInPicture",""):this.GetElementHandle().hasAttribute("disablePictureInPicture")&&this.GetElementHandle().removeAttribute("disablePictureInPicture"))},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FVolume=100,this.FPlaybackRate=1,this.FMuted=!1,this.FAutoPlay=!1,this.FContextMenu=!0,this.FPreload=0,4 in this.FComponentState&&(this.SetWidth(400),this.SetHeight(300))};var t=this.$rtti;t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("AutoPlay",2,rtl.boolean,"FAutoPlay","SetAutoPlay"),t.addProperty("Controls",2,rtl.boolean,"FControls$1","SetControls"),t.addProperty("ContextMenu",2,rtl.boolean,"FContextMenu","SetContextMenu",{Default:!0}),t.addProperty("HideControls",2,e.$rtti.TMultiMediaControls,"FHideControls","SetHideControls"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Loop",2,rtl.boolean,"FLoop","SetLoop"),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("MultimediaType",0,e.$rtti.TMultiMediaType,"FMultimediaType","FMultimediaType"),t.addProperty("Muted",2,rtl.boolean,"FMuted","SetMuted"),t.addProperty("PlaybackRate",2,rtl.double,"FPlaybackRate","SetPlaybackRate"),t.addProperty("Poster",2,rtl.string,"FPoster","SetPoster"),t.addProperty("Preload",2,e.$rtti.TMultiMediaPreload,"FPreload","SetPreload"),t.addProperty("URL",2,rtl.string,"FURL","SetURL"),t.addProperty("Volume",2,e.$rtti.TMultiMediaVolume,"FVolume","SetVolume"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),t.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),t.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove")})),rtl.createClass(this,"THTMLContainer",pas["WEBLib.Controls"].TCustomControl,(function(){this.$init=function(){pas["WEBLib.Controls"].TCustomControl.$init.call(this),this.FHTML=null,this.FScrollStyle=0,this.FURL="",this.FOnLoaded=null},this.$final=function(){this.FHTML=void 0,this.FOnLoaded=void 0,pas["WEBLib.Controls"].TCustomControl.$final.call(this)},this.SetHTML=function(e){this.FHTML.Assign(e)},this.SetURL=function(e){this.FURL=e,this.LoadFromURL(this.FURL)},this.CreateElement=function(){return document.createElement("DIV")},this.UpdateElement=function(){var e=!1;if(pas["WEBLib.Controls"].TControl.UpdateElement.call(this),!this.IsUpdating()&&null!=this.GetElementHandle()&&null!=this.GetContainer()){""!==this.FElementClassName?(this.GetElementHandle().style.removeProperty("border"),this.GetElementHandle().style.removeProperty("background-color")):this.GetElementHandle().style.setProperty("white-space","normal"),null!=this.FHTML&&(e=""!==this.FHTML.GetTextStr(),this.GetContainer().innerHTML=this.FHTML.GetTextStr()),!this.GetIsLinked()&&4 in this.FComponentState&&this.RenderDesigning(this.$classname,this.GetContainer(),this,!e,"");var t=this.FScrollStyle;3===t?this.GetElementHandle().style.setProperty("overflow","auto"):0===t?this.GetElementHandle().style.setProperty("overflow",""):2===t?this.GetElementHandle().style.setProperty("overflow-y","auto"):1===t&&this.GetElementHandle().style.setProperty("overflow-x","auto")}},this.HTMLChanged=function(e){this.UpdateElement()},this.DoLoaded=function(){null!=this.FOnLoaded&&this.FOnLoaded(this)},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FHTML=pas.Classes.TStringList.$create("Create$1"),this.FHTML.SetSkipLastLineBreak(!0),this.FHTML.FOnChange=rtl.createCallback(this,"HTMLChanged"),this.FScrollStyle=3,4 in this.FComponentState&&(this.SetWidth(240),this.SetHeight(160))},this.Destroy=function(){rtl.free(this,"FHTML"),pas["WEBLib.Controls"].TCustomControl.Destroy.call(this)},this.LoadFromURL=function(e){var t=this,i=null;return new Promise((function(a,n){(i=pas["WEBLib.REST"].TWebHTTPRequest.$create("Create$1",[t])).FURL=e,i.Execute$1((function(e,i){t.FHTML.SetTextStr(e),t.DoLoaded(),a(!0)}),(function(e){n(!1)}))}))};var e=this.$rtti;e.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),e.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),e.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),e.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),e.addProperty("ElementFont",2,pas["WEBLib.Controls"].$rtti.TElementFont,"FElementFont","SetElementFont",{Default:pas["WEBLib.Controls"].TElementFont.efProperty}),e.addProperty("ElementID",3,pas["WEBLib.Controls"].$rtti.TElementID,"GetID","SetID"),e.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),e.addProperty("Font",2,pas["WEBLib.Graphics"].$rtti.TFont,"FFont","SetFont"),e.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),e.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("HTML",2,pas.Classes.$rtti.TStringList,"FHTML","SetHTML"),e.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),e.addProperty("Role",3,rtl.string,"GetRole","SetRole"),e.addProperty("ScrollStyle",0,pas["WEBLib.Controls"].$rtti.TScrollStyle,"FScrollStyle","FScrollStyle"),e.addProperty("URL",2,rtl.string,"FURL","SetURL"),e.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),e.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),e.addProperty("OnClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnClick","FOnClick"),e.addProperty("OnDblClick",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnDblClick","FOnDblClick"),e.addProperty("OnLoaded",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnLoaded","FOnLoaded"),e.addProperty("OnMouseDown",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseDown","FOnMouseDown"),e.addProperty("OnMouseMove",0,pas["WEBLib.Controls"].$rtti.TMouseMoveEvent,"FOnMouseMove","FOnMouseMove"),e.addProperty("OnMouseUp",0,pas["WEBLib.Controls"].$rtti.TMouseEvent,"FOnMouseUp","FOnMouseUp"),e.addProperty("OnMouseLeave",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseLeave","FOnMouseLeave"),e.addProperty("OnMouseEnter",0,pas["WEBLib.Controls"].$rtti.TNotifyEvent,"FOnMouseEnter","FOnMouseEnter"),e.addProperty("OnTouchEnd",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchEnd","FOnTouchEnd"),e.addProperty("OnTouchCancel",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchCancel","FOnTouchCancel"),e.addProperty("OnTouchStart",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchStart","FOnTouchStart"),e.addProperty("OnTouchMove",0,pas["WEBLib.Controls"].$rtti.TTouchEvent,"FOnTouchMove","FOnTouchMove"),e.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),e.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),e.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),e.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")}))}),["WEBLib.Utils"]),rtl.module("WEBLib.ComCtrls",["System","Classes","SysUtils","Web","WEBLib.Controls","WEBLib.Graphics","WEBLib.ExtCtrls","WEBLib.Menus"],(function(){"use strict";var e=this;this.TProgressBarStyle={0:"pbstNormal",pbstNormal:0,1:"pbstMarquee",pbstMarquee:1,2:"pbstDiv",pbstDiv:2},this.$rtti.$Enum("TProgressBarStyle",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TProgressBarStyle}),this.TProgressBarValue={0:"pbvNone",pbvNone:0,1:"pbvPercentage",pbvPercentage:1,2:"pbvAbsolute",pbvAbsolute:2},this.$rtti.$Enum("TProgressBarValue",{minvalue:0,maxvalue:2,ordtype:1,enumtype:this.TProgressBarValue}),rtl.createClass(this,"TProgressBar",pas["WEBLib.Menus"].TWebCustomControl,(function(){this.$init=function(){pas["WEBLib.Menus"].TWebCustomControl.$init.call(this),this.FMax=0,this.FMin=0,this.FPosition=0,this.FStyle=0,this.FElementBarClassName="",this.FValue=0,this.FValueColor=0},this.SetStyle=function(e){this.FStyle!==e&&(this.FStyle=e,null!=this.GetElementHandle()&&(this.CreateProgressElement(this.GetElementHandle()),this.DoUpdate()))},this.SetElementBarClassName=function(e){this.FElementBarClassName=e,this.DoUpdate()},this.SetValue=function(e){this.FValue=e,this.DoUpdate()},this.SetValueColor=function(e){this.FValueColor!==e&&(this.FValueColor=e,this.UpdateElementVisual())},this.CreateElement=function(){var e;return e=document.createElement("SPAN"),this.CreateProgressElement(e),e},this.SetMax=function(e){this.FMax=e,this.DoUpdate()},this.SetMin=function(e){this.FMin=e,this.DoUpdate()},this.SetPosition=function(e){e>=this.FMin&&e<=this.FMax&&(this.FPosition=e,this.DoUpdate())},this.DoUpdate=function(){var e=0,t=0,i=null,a=0;if(null!=this.GetContainer())if(a=this.FMax!==this.FMin?Math.round((this.FPosition-this.FMin)/(this.FMax-this.FMin)*100):0,this.GetIsLinked())"DIV"===this.GetElementHandle().tagName?"progressbar"===this.GetElementHandle().getAttribute("role")?this.GetElementHandle().style.setProperty("width",pas.SysUtils.IntToStr(a)+"%"):this.GetElementHandle().innerHTML=pas.SysUtils.IntToStr(a):this.GetElementHandle().setAttribute("value",pas.SysUtils.IntToStr(a));else if(2===this.FStyle){i=this.GetElementHandle().firstChild,""!==this.FElementClassName&&(i.setAttribute("class",this.FElementClassName),this.GetElementHandle().removeAttribute("class")),i.style.setProperty("height",pas.SysUtils.IntToStr(this.GetHeight())+"px"),1===this.FWidthStyle&&i.style.setProperty("width",pas.SysUtils.IntToStr(this.GetWidth())+"px"),(i=i.firstChild).style.setProperty("background-color","#3397FD"),""!==this.FElementBarClassName&&i.setAttribute("class",this.FElementBarClassName),i.setAttribute("role","progressbar"),i.style.setProperty("width",pas.SysUtils.IntToStr(a)+"%");var n=this.FValue;1===n?i.innerHTML=pas.SysUtils.IntToStr(a)+"%":2===n?i.innerHTML=pas.SysUtils.IntToStr(this.FPosition):0===n&&(i.innerHTML=" ")}else(i=this.GetElementHandle().firstChild).style.setProperty("width","100%"),i.style.setProperty("height","100%"),e=this.FPosition-this.FMin,t=this.FMax-this.FMin,i.setAttribute("max",pas.SysUtils.IntToStr(t)),0===this.FStyle?i.setAttribute("value",pas.SysUtils.IntToStr(e)):i.removeAttribute("value")},this.UpdateElementVisual=function(){pas["WEBLib.Controls"].TCustomControl.UpdateElementVisual.call(this),-1!==this.FValueColor&&(2===this.FStyle?this.GetElementHandle().firstChild.firstChild.style.setProperty("background-color",pas["WEBLib.Graphics"].ColorToHTML(this.FValueColor)):this.GetElementHandle().firstChild.style.setProperty("accent-color",pas["WEBLib.Graphics"].ColorToHTML(this.FValueColor)))},this.CreateProgressElement=function(e){for(var t=null;null!=e.firstChild;)e.removeChild(e.firstChild);2===this.FStyle?(t=document.createElement("DIV")).appendChild(document.createElement("DIV")):t=document.createElement("PROGRESS"),e.appendChild(t)},this.CreateInitialize=function(){pas["WEBLib.Controls"].TCustomControl.CreateInitialize.call(this),this.FMax=100,this.FMin=0,this.FPosition=0,this.FStyle=0,this.FValueColor=-1},this.AfterLoadDFMValues=function(){pas.Classes.TComponent.AfterLoadDFMValues.call(this),this.DoUpdate()};var t=this.$rtti;t.addProperty("Align",2,pas["WEBLib.Controls"].$rtti.TAlign,"FAlign","SetAlign",{Default:pas["WEBLib.Controls"].TAlign.alNone}),t.addProperty("AlignWithMargins",2,rtl.boolean,"FAlignWithMargins","SetAlignWithMargins",{Default:!1}),t.addProperty("Anchors",2,pas["WEBLib.Controls"].$rtti.TAnchors,"FAnchors","SetAnchors",{Default:rtl.createSet(0,1)}),t.addProperty("DragMode",2,pas["WEBLib.Controls"].$rtti.TDragMode,"FDragMode","SetDragMode",{Default:pas["WEBLib.Controls"].TDragMode.dmManual}),t.addProperty("ElementBarClassName",2,rtl.string,"FElementBarClassName","SetElementBarClassName"),t.addProperty("ElementPosition",2,pas["WEBLib.Controls"].$rtti.TElementPosition,"FElementPosition","SetElementPosition",{Default:pas["WEBLib.Controls"].TElementPosition.epAbsolute}),t.addProperty("Height",3,rtl.longint,"GetHeight","SetHeight"),t.addProperty("HeightPercent",2,rtl.double,"FHeightPercent","SetHeightPercent",{Default:100}),t.addProperty("HeightStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FHeightStyle","SetHeightStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("Left",3,rtl.longint,"GetLeft","SetLeft"),t.addProperty("Margins",2,pas["WEBLib.Controls"].$rtti.TMargins,"FMargins","SetMargins"),t.addProperty("Max",2,rtl.longint,"FMax","SetMax"),t.addProperty("Min",2,rtl.longint,"FMin","SetMin"),t.addProperty("PopupMenu",0,pas["WEBLib.Menus"].$rtti.TPopupMenu,"FPopupMenu","FPopupMenu"),t.addProperty("Position",2,rtl.longint,"FPosition","SetPosition"),t.addProperty("Style",2,e.$rtti.TProgressBarStyle,"FStyle","SetStyle"),t.addProperty("Top",3,rtl.longint,"GetTop","SetTop"),t.addProperty("Value",2,e.$rtti.TProgressBarValue,"FValue","SetValue"),t.addProperty("ValueColor",2,pas["WEBLib.Graphics"].$rtti.TColor,"FValueColor","SetValueColor",{Default:-1}),t.addProperty("Visible",2,rtl.boolean,"FVisible","SetVisible",{Default:!0}),t.addProperty("Width",3,rtl.longint,"GetWidth","SetWidth"),t.addProperty("WidthPercent",2,rtl.double,"FWidthPercent","SetWidthPercent",{Default:100}),t.addProperty("WidthStyle",2,pas["WEBLib.Controls"].$rtti.TSizeStyle,"FWidthStyle","SetWidthStyle",{Default:pas["WEBLib.Controls"].TSizeStyle.ssAbsolute}),t.addProperty("OnDragDrop",0,pas["WEBLib.Controls"].$rtti.TDragDropEvent,"FOnDragDrop","FOnDragDrop"),t.addProperty("OnDragOver",0,pas["WEBLib.Controls"].$rtti.TDragOverEvent,"FOnDragOver","FOnDragOver"),t.addProperty("OnEndDrag",0,pas["WEBLib.Controls"].$rtti.TEndDragEvent,"FonEndDrag","FonEndDrag"),t.addProperty("OnStartDrag",0,pas["WEBLib.Controls"].$rtti.TStartDragEvent,"FOnStartDrag","FOnStartDrag")}))}),["WEBLib.Forms","WEBLib.Utils"]),rtl.module("DateUtils",["System","SysUtils","Math"],(function(){"use strict";var e=this.$impl;this.IncMinute=function(t,i){var a=0;return a=t>=0?t+i/1440:e.IncNegativeTime(t,i/1440),e.MaybeSkipTimeWarp(t,{get:function(){return a},set:function(e){a=e}}),a},this.$implcode=function(){e.TDateTimeEpsilon=22204460493e-26,e.MaybeSkipTimeWarp=function(e,t){e>=0&&t.get()<-22204460493e-26?t.set(pas.System.Int(t.get()-1+22204460493e-26)-pas.System.Frac(1+pas.System.Frac(t.get()))):e<=-1&&t.get()>22204460493e-26-1&&t.set(pas.System.Int(t.get()+1-22204460493e-26)+pas.System.Frac(1-Math.abs(pas.System.Frac(1+t.get()))))},e.IncNegativeTime=function(e,t){var i=0;return i=-pas.System.Frac(e)+pas.System.Frac(t),pas.Math.SameValue(i,pas.System.Int(i)+1,22204460493e-26)?i=pas.System.Int(i)+1:pas.Math.SameValue(i,pas.System.Int(i),22204460493e-26)&&(i=pas.System.Int(i)),i<-22204460493e-26?(i=1+i,e=pas.System.Int(e)-1):i>=.9999999999999998&&(i-=1,e=pas.System.Int(e)+1),pas.System.Int(e)+pas.System.Int(t)-i}}}),["JS","RTLConsts"]),rtl.module("WEBLib.Cookies",["System","SysUtils","Classes"],(function(){"use strict";var e=this;rtl.createClass(this,"TCookie",pas.Classes.TCollectionItem,(function(){this.$init=function(){pas.Classes.TCollectionItem.$init.call(this),this.FPath="",this.FName="",this.FExpiry=0,this.FValue="",this.FChanged=!1},this.SetExpiry=function(e){this.FExpiry!==e&&(this.FExpiry=e,this.FChanged=!0)},this.SetName=function(e){this.FName!==e&&(this.FName=e,this.FChanged=!0)},this.SetPath=function(e){this.FPath!==e&&(this.FPath=e,this.FChanged=!0)},this.SetValue=function(e){this.FValue!==e&&(this.FValue=e,this.FChanged=!0)},this.CookieAsString=function(){var e="",t=null,i=0,a=0,n=0,s=0,o=0,r=0,l=0;return e=this.FName+"="+encodeURIComponent(this.FValue)+";",0!==this.FExpiry&&(pas.SysUtils.DecodeDate(this.FExpiry,{get:function(){return i},set:function(e){i=e}},{get:function(){return a},set:function(e){a=e}},{get:function(){return n},set:function(e){n=e}}),pas.SysUtils.DecodeTime(this.FExpiry,{get:function(){return s},set:function(e){s=e}},{get:function(){return o},set:function(e){o=e}},{get:function(){return r},set:function(e){r=e}},{get:function(){return l},set:function(e){l=e}}),t=new Date(i,a-1,n,s,o,r,l),e=e+"expires="+(1970===i&&1===a&&1===n?"Thu, 01 Jan 1970 00:00:00 UTC":t.toUTCString())+";"),""!==this.FPath?e=e+"path="+this.FPath+";":e+="path=/;",e};var e=this.$rtti;e.addProperty("Name",2,rtl.string,"FName","SetName"),e.addProperty("Value",2,rtl.string,"FValue","SetValue"),e.addProperty("Expiry",2,pas.System.$rtti.TDateTime,"FExpiry","SetExpiry"),e.addProperty("Path",2,rtl.string,"FPath","SetPath")})),rtl.createClass(this,"TCookies",pas.Classes.TCollection,(function(){this.GetItem$1=function(e){return this.GetItem(e)},this.Create$2=function(){return pas.Classes.TCollection.Create$1.call(this,e.TCookie),this},this.SetCookies=function(){var e="",t=0;e="";for(var i=0,a=this.GetCount()-1;i<=a;i++)t=i,this.GetItem$1(t).FChanged&&(this.GetItem$1(t).FChanged=!1,e=this.GetItem$1(t).CookieAsString(),document.cookie=e)},this.Add$1=function(e,t,i){return this.Add$4(e,t,"/",i)},this.Add$4=function(e,t,i,a){var n=null;return n=null,""===e||((n=pas.Classes.TCollection.Add.call(this)).SetName(e),n.SetValue(t),n.SetExpiry(a),n.SetPath(i),n.FChanged=!0),n},this.$rtti.addMethod("Create$2",2,[])}))}),["Web","JS"]),rtl.module("uCookies",["System","SysUtils","DateUtils","WEBLib.Cookies"],(function(){"use strict";var e=this;this.SetCookie=function(e,t,i){var a=null;a=pas["WEBLib.Cookies"].TCookies.$create("Create$2");try{a.Add$1(e,t,pas.DateUtils.IncMinute(pas.SysUtils.Now(),i)),a.SetCookies()}finally{a=rtl.freeLoc(a)}},this.DeleteCookie=function(t){e.SetCookie(t,"",-2147483648)}})),rtl.module("uColors",["System","SysUtils","WEBLib.Graphics","WEBLib.Graphics"],(function(){"use strict";this.MakeColorDarker=function(e){return pas["WEBLib.Graphics"].RGB(rtl.trunc(pas["WEBLib.Graphics"].GetRValue(e)/2),rtl.trunc(pas["WEBLib.Graphics"].GetGValue(e)/2),rtl.trunc(pas["WEBLib.Graphics"].GetBValue(e)/2))}})),rtl.module("StrUtils",["System","SysUtils","Types"],(function(){"use strict";var e=this,t=e.$impl;this.AnsiMatchText=function(t,i){return-1!==e.AnsiIndexText(t,i)},this.AnsiIndexText=function(e,t){var i=0;if(-1,rtl.length(t)-1==-1||rtl.length(t)-1>2147483647)return-1;for(var a=0,n=rtl.length(t)-1;a<=n;a++)if(i=a,0===pas.SysUtils.CompareText(t[i],e))return i;return-1},this.MatchText=function(t,i){return e.AnsiMatchText(t,i)},this.Soundex=function(e,i){var a="",n="",s="",o=0,r=0;if(a="",s="\0",e.length>0)for(a=pas.System.upcase(e.charAt(0)),o=2,r=e.length;o<=r&&a.length0?null!=(a=t[i].getAsFile())&&((n=new FileReader).onload=rtl.createSafeCallback(this,"HandleFileLoad"),n.readAsDataURL(a)):"string"===t[i].kind&&this.ReadStringData(t[i],t[i].type);return!0},this.HandleFileLoad=function(e){var t;return!0,t=e.target.result,null!=this.FOnImageData&&this.FOnImageData(t),!0},this.ReadStringData=function(e,t){var i=this;e.getAsString((function(e){null!=i.FOnTextData&&i.FOnTextData(e,t)}))},this.Create$1=function(e){return pas.Classes.TComponent.Create$1.apply(this,arguments),this.BindEventListener(),this},this.Destroy=function(){this.UnbindEventListener(),pas.Classes.TComponent.Destroy.call(this)},this.CopyToClipboard=function(e){null!=window.navigator.clipboard&&window.navigator.clipboard.writeText(e)};var t=this.$rtti;t.addMethod("Create$1",2,[["AOwner",pas.Classes.$rtti.TComponent]]),t.addProperty("OnImageData",0,e.$rtti.TClipboardImageDataEvent,"FOnImageData","FOnImageData"),t.addProperty("OnTextData",0,e.$rtti.TClipboardTextDataEvent,"FOnTextData","FOnTextData")}))})),rtl.module("uSettings",["System","SysUtils","Classes","JS","Web","WEBLib.Graphics","WEBLib.Controls","WEBLib.Forms","WEBLib.Dialogs","WEBLib.ExtCtrls","WEBLib.ComCtrls","WEBLib.Controls","WEBLib.StdCtrls","WEBLib.StdCtrls","WEBLib.Clipboard","uColors"],(function(){"use strict";rtl.createClass(this,"TFrame_Settings",pas["WEBLib.Forms"].TFrame,(function(){this.$init=function(){pas["WEBLib.Forms"].TFrame.$init.call(this),this.laySettingsContainer=null,this.layGame=null,this.lblGameName=null,this.imgGameLogo=null,this.layLanguage=null,this.imgAchievement0=null,this.layAchievementText0=null,this.lblAchievementDescription0=null,this.lblAchievementName0=null,this.WebComboBox1=null,this.layAppInfo=null,this.WebImageControl1=null,this.WebPanel2=null,this.lblAppDescription=null,this.lblAppInfo=null,this.btnChangeLog=null,this.btnCopyAppInfo=null,this.layUsefulLinks=null,this.layUsefulLinksTop=null,this.WebImageControl2=null,this.WebPanel4=null,this.WebLabel4=null,this.layNavSourceCode=null,this.btnNavSourceCode=null,this.lblNavSourceCode=null,this.imgNavSourceCode=null,this.layNavLicense=null,this.btnNavLicense=null,this.lblNavLicense=null,this.imgNavLicense=null,this.layNavDownloadApp=null,this.btnNavDownloadApp=null,this.lblNavDownloadApp=null,this.imgNavDownloadApp=null,this.layNavReportAProblem=null,this.btnNavReportAProblem=null,this.lblNavReportAProblem=null,this.imgNavReportAProblem=null,this.PageCreated=!1},this.$final=function(){this.laySettingsContainer=void 0,this.layGame=void 0,this.lblGameName=void 0,this.imgGameLogo=void 0,this.layLanguage=void 0,this.imgAchievement0=void 0,this.layAchievementText0=void 0,this.lblAchievementDescription0=void 0,this.lblAchievementName0=void 0,this.WebComboBox1=void 0,this.layAppInfo=void 0,this.WebImageControl1=void 0,this.WebPanel2=void 0,this.lblAppDescription=void 0,this.lblAppInfo=void 0,this.btnChangeLog=void 0,this.btnCopyAppInfo=void 0,this.layUsefulLinks=void 0,this.layUsefulLinksTop=void 0,this.WebImageControl2=void 0,this.WebPanel4=void 0,this.WebLabel4=void 0,this.layNavSourceCode=void 0,this.btnNavSourceCode=void 0,this.lblNavSourceCode=void 0,this.imgNavSourceCode=void 0,this.layNavLicense=void 0,this.btnNavLicense=void 0,this.lblNavLicense=void 0,this.imgNavLicense=void 0,this.layNavDownloadApp=void 0,this.btnNavDownloadApp=void 0,this.lblNavDownloadApp=void 0,this.imgNavDownloadApp=void 0,this.layNavReportAProblem=void 0,this.btnNavReportAProblem=void 0,this.lblNavReportAProblem=void 0,this.imgNavReportAProblem=void 0,pas["WEBLib.Forms"].TFrame.$final.call(this)},this.ButtonMouseEnter=function(e){e.SetColor(pas.uColors.MakeColorDarker(14120960))},this.ButtonMouseLeave=function(e){e.SetColor(14120960)},this.LinkMouseEnter=function(e){e.SetColor(14120960)},this.LinkMouseLeave=function(e){e.SetColor(-1)},this.WebFrameResize=function(e){!1===this.PageCreated&&this.StylePage(),this.layUsefulLinks.GetWidth()>600?(this.layUsefulLinks.SetHeight(176),this.layNavLicense.SetTop(this.layNavSourceCode.GetTop()),this.layNavLicense.SetLeft(378),this.layNavReportAProblem.SetTop(this.layNavDownloadApp.GetTop()),this.layNavReportAProblem.SetLeft(378)):(this.layUsefulLinks.SetHeight(176+2*this.layNavDownloadApp.GetHeight()),this.layNavLicense.SetTop(this.layNavDownloadApp.GetTop()+this.layNavDownloadApp.GetHeight()),this.layNavLicense.SetLeft(this.layNavDownloadApp.GetLeft()),this.layNavReportAProblem.SetTop(this.layNavLicense.GetTop()+this.layNavLicense.GetHeight()),this.layNavReportAProblem.SetLeft(this.layNavDownloadApp.GetLeft()))},this.btnNavSourceCodeClick=function(e){pas["WEBLib.Forms"].Application.Navigate("https://github.com/shaunroselt/HaloTracker.org",0)},this.btnNavLicenseClick=function(e){pas["WEBLib.Forms"].Application.Navigate("https://github.com/shaunroselt/HaloTracker.org/blob/main/LICENSE",0)},this.btnNavReportAProblemClick=function(e){pas["WEBLib.Forms"].Application.Navigate("https://github.com/shaunroselt/HaloTracker.org/issues",0)},this.btnNavDownloadAppClick=function(e){pas["WEBLib.Dialogs"].ShowMessage("Coming Soon!")},this.btnCopyAppInfoClick=function(e){var t=null;t=pas["WEBLib.Clipboard"].TClipboard.$create("Create$1",[this]);try{t.$class.CopyToClipboard(this.lblAppInfo.FCaption+" ("+this.lblAppDescription.FCaption+")")}finally{t=rtl.freeLoc(t)}},this.btnChangeLogClick=function(e){pas["WEBLib.Forms"].Application.Navigate("https://github.com/shaunroselt/HaloTracker.org/blob/main/RELEASE_NOTES.md",0)},this.StylePage=function(){this.laySettingsContainer.GetElementHandle().style.setProperty("border-radius","5px"),this.laySettingsContainer.GetElementHandle().style.setProperty("background-color","rgba(0, 0, 0, .7)"),this.laySettingsContainer.GetElementHandle().style.setProperty("backdrop-filter","blur(8px)"),this.layLanguage.GetElementHandle().style.setProperty("border-radius","5px"),this.layAppInfo.GetElementHandle().style.setProperty("border-radius","5px"),this.layUsefulLinks.GetElementHandle().style.setProperty("border-radius","5px"),this.btnCopyAppInfo.GetElementHandle().style.setProperty("border-radius","5px"),this.btnCopyAppInfo.GetElementHandle().style.setProperty("border-width","0"),this.btnCopyAppInfo.GetElementHandle().innerHTML='',this.btnChangeLog.GetElementHandle().style.setProperty("border-radius","5px"),this.btnChangeLog.GetElementHandle().style.setProperty("border-width","0"),this.btnChangeLog.GetElementHandle().innerHTML='',this.btnNavSourceCode.GetElementHandle().style.setProperty("border-radius","5px"),this.imgNavSourceCode.GetElementHandle().style.setProperty("object-fit","none"),this.btnNavLicense.GetElementHandle().style.setProperty("border-radius","5px"),this.imgNavLicense.GetElementHandle().style.setProperty("object-fit","none"),this.btnNavDownloadApp.GetElementHandle().style.setProperty("border-radius","5px"),this.imgNavDownloadApp.GetElementHandle().style.setProperty("object-fit","none"),this.btnNavReportAProblem.GetElementHandle().style.setProperty("border-radius","5px"),this.imgNavReportAProblem.GetElementHandle().style.setProperty("object-fit","none")},this.SetContent=function(){window.console.log("TFrame_Settings.SetContent")},this.LoadDFMValues=function(){pas["WEBLib.Forms"].TCustomFrame.LoadDFMValues.call(this),this.laySettingsContainer=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.layGame=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblGameName=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgGameLogo=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.layLanguage=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.imgAchievement0=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.layAchievementText0=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblAchievementDescription0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblAchievementName0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.WebComboBox1=pas["WEBLib.StdCtrls"].TComboBox.$create("Create$1",[this]),this.layAppInfo=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.WebImageControl1=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.WebPanel2=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblAppDescription=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblAppInfo=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.btnChangeLog=pas["WEBLib.StdCtrls"].TButton.$create("Create$1",[this]),this.btnCopyAppInfo=pas["WEBLib.StdCtrls"].TButton.$create("Create$1",[this]),this.layUsefulLinks=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.layUsefulLinksTop=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.WebImageControl2=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.WebPanel4=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.WebLabel4=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.layNavSourceCode=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.btnNavSourceCode=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblNavSourceCode=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgNavSourceCode=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.layNavLicense=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.btnNavLicense=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblNavLicense=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgNavLicense=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.layNavDownloadApp=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.btnNavDownloadApp=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblNavDownloadApp=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgNavDownloadApp=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.layNavReportAProblem=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.btnNavReportAProblem=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblNavReportAProblem=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgNavReportAProblem=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.laySettingsContainer.BeforeLoadDFMValues(),this.layGame.BeforeLoadDFMValues(),this.lblGameName.BeforeLoadDFMValues(),this.imgGameLogo.BeforeLoadDFMValues(),this.layLanguage.BeforeLoadDFMValues(),this.imgAchievement0.BeforeLoadDFMValues(),this.layAchievementText0.BeforeLoadDFMValues(),this.lblAchievementDescription0.BeforeLoadDFMValues(),this.lblAchievementName0.BeforeLoadDFMValues(),this.WebComboBox1.BeforeLoadDFMValues(),this.layAppInfo.BeforeLoadDFMValues(),this.WebImageControl1.BeforeLoadDFMValues(),this.WebPanel2.BeforeLoadDFMValues(),this.lblAppDescription.BeforeLoadDFMValues(),this.lblAppInfo.BeforeLoadDFMValues(),this.btnChangeLog.BeforeLoadDFMValues(),this.btnCopyAppInfo.BeforeLoadDFMValues(),this.layUsefulLinks.BeforeLoadDFMValues(),this.layUsefulLinksTop.BeforeLoadDFMValues(),this.WebImageControl2.BeforeLoadDFMValues(),this.WebPanel4.BeforeLoadDFMValues(),this.WebLabel4.BeforeLoadDFMValues(),this.layNavSourceCode.BeforeLoadDFMValues(),this.btnNavSourceCode.BeforeLoadDFMValues(),this.lblNavSourceCode.BeforeLoadDFMValues(),this.imgNavSourceCode.BeforeLoadDFMValues(),this.layNavLicense.BeforeLoadDFMValues(),this.btnNavLicense.BeforeLoadDFMValues(),this.lblNavLicense.BeforeLoadDFMValues(),this.imgNavLicense.BeforeLoadDFMValues(),this.layNavDownloadApp.BeforeLoadDFMValues(),this.btnNavDownloadApp.BeforeLoadDFMValues(),this.lblNavDownloadApp.BeforeLoadDFMValues(),this.imgNavDownloadApp.BeforeLoadDFMValues(),this.layNavReportAProblem.BeforeLoadDFMValues(),this.btnNavReportAProblem.BeforeLoadDFMValues(),this.lblNavReportAProblem.BeforeLoadDFMValues(),this.imgNavReportAProblem.BeforeLoadDFMValues();try{this.SetName("Frame_Settings"),this.SetLeft(0),this.SetTop(0),this.SetWidth(1663),this.SetHeight(906),this.SetTabOrder(0),this.SetEvent(this,"OnResize","WebFrameResize"),this.laySettingsContainer.SetParentComponent(this),this.laySettingsContainer.SetName("laySettingsContainer"),this.laySettingsContainer.SetAlignWithMargins(!0),this.laySettingsContainer.SetLeft(20),this.laySettingsContainer.SetTop(20),this.laySettingsContainer.SetWidth(1623),this.laySettingsContainer.SetHeight(866),this.laySettingsContainer.FMargins.SetLeft(20),this.laySettingsContainer.FMargins.SetTop(20),this.laySettingsContainer.FMargins.SetRight(20),this.laySettingsContainer.FMargins.SetBottom(20),this.laySettingsContainer.FCenter.SetHorizontal(!0),this.laySettingsContainer.SetAlign(5),this.laySettingsContainer.SetBorderColor(16777215),this.laySettingsContainer.SetChildOrderEx(1),this.laySettingsContainer.SetColor(0),this.layGame.SetParentComponent(this.laySettingsContainer),this.layGame.SetName("layGame"),this.layGame.SetAlignWithMargins(!0),this.layGame.SetLeft(10),this.layGame.SetTop(10),this.layGame.SetWidth(1603),this.layGame.SetHeight(55),this.layGame.FMargins.SetLeft(10),this.layGame.FMargins.SetTop(10),this.layGame.FMargins.SetRight(10),this.layGame.FMargins.SetBottom(20),this.layGame.SetAlign(1),this.layGame.SetBorderColor(16777215),this.layGame.SetBorderStyle(0),this.layGame.SetChildOrderEx(1),this.layGame.SetColor(-1),this.layGame.SetShowCaption(!1),this.lblGameName.SetParentComponent(this.layGame),this.lblGameName.SetName("lblGameName"),this.lblGameName.SetAlignWithMargins(!0),this.lblGameName.SetLeft(55),this.lblGameName.SetTop(0),this.lblGameName.SetWidth(1535),this.lblGameName.SetHeight(55),this.lblGameName.FMargins.SetLeft(0),this.lblGameName.FMargins.SetTop(0),this.lblGameName.FMargins.SetRight(13),this.lblGameName.FMargins.SetBottom(0),this.lblGameName.SetAlign(5),this.lblGameName.SetCaption("Settings"),this.lblGameName.FFont.FCharset=1,this.lblGameName.FFont.SetColor(16777215),this.lblGameName.FFont.SetHeight(-23),this.lblGameName.FFont.SetName("Segoe UI"),this.lblGameName.FFont.SetStyle({}),this.lblGameName.SetHeightPercent(100),this.lblGameName.SetLayout(1),this.lblGameName.SetParentFont(!1),this.lblGameName.SetWidthPercent(100),this.imgGameLogo.SetParentComponent(this.layGame),this.imgGameLogo.SetName("imgGameLogo"),this.imgGameLogo.SetAlignWithMargins(!0),this.imgGameLogo.SetLeft(6),this.imgGameLogo.SetTop(6),this.imgGameLogo.SetWidth(43),this.imgGameLogo.SetHeight(43),this.imgGameLogo.FMargins.SetLeft(6),this.imgGameLogo.FMargins.SetTop(6),this.imgGameLogo.FMargins.SetRight(6),this.imgGameLogo.FMargins.SetBottom(6),this.imgGameLogo.SetHeightPercent(100),this.imgGameLogo.SetWidthPercent(100),this.imgGameLogo.SetAlign(3),this.imgGameLogo.SetChildOrderEx(1),this.imgGameLogo.SetURL("assets/settings.svg"),this.layLanguage.SetParentComponent(this.laySettingsContainer),this.layLanguage.SetName("layLanguage"),this.layLanguage.SetAlignWithMargins(!0),this.layLanguage.SetLeft(20),this.layLanguage.SetTop(85),this.layLanguage.SetWidth(1583),this.layLanguage.SetHeight(76),this.layLanguage.FMargins.SetLeft(20),this.layLanguage.FMargins.SetTop(0),this.layLanguage.FMargins.SetRight(20),this.layLanguage.FMargins.SetBottom(10),this.layLanguage.SetAlign(1),this.layLanguage.SetBorderColor(16777215),this.layLanguage.SetChildOrderEx(2),this.layLanguage.SetColor(2366745),this.layLanguage.SetShowCaption(!1),this.imgAchievement0.SetParentComponent(this.layLanguage),this.imgAchievement0.SetName("imgAchievement0"),this.imgAchievement0.SetAlignWithMargins(!0),this.imgAchievement0.SetLeft(13),this.imgAchievement0.SetTop(18),this.imgAchievement0.SetWidth(40),this.imgAchievement0.SetHeight(40),this.imgAchievement0.FMargins.SetLeft(13),this.imgAchievement0.FMargins.SetTop(18),this.imgAchievement0.FMargins.SetRight(13),this.imgAchievement0.FMargins.SetBottom(18),this.imgAchievement0.SetHeightPercent(100),this.imgAchievement0.SetWidthPercent(100),this.imgAchievement0.SetAlign(3),this.imgAchievement0.SetURL("assets/translate.svg"),this.layAchievementText0.SetParentComponent(this.layLanguage),this.layAchievementText0.SetName("layAchievementText0"),this.layAchievementText0.SetAlignWithMargins(!0),this.layAchievementText0.SetLeft(66),this.layAchievementText0.SetTop(13),this.layAchievementText0.SetWidth(1329),this.layAchievementText0.SetHeight(50),this.layAchievementText0.FMargins.SetLeft(0),this.layAchievementText0.FMargins.SetTop(13),this.layAchievementText0.FMargins.SetRight(0),this.layAchievementText0.FMargins.SetBottom(13),this.layAchievementText0.SetAlign(5),this.layAchievementText0.SetBorderStyle(0),this.layAchievementText0.SetChildOrderEx(1),this.layAchievementText0.SetColor(-1),this.layAchievementText0.FPadding.SetTop(4),this.layAchievementText0.FPadding.SetBottom(6),this.layAchievementText0.SetShowCaption(!1),this.lblAchievementDescription0.SetParentComponent(this.layAchievementText0),this.lblAchievementDescription0.SetName("lblAchievementDescription0"),this.lblAchievementDescription0.SetLeft(0),this.lblAchievementDescription0.SetTop(29),this.lblAchievementDescription0.SetWidth(1329),this.lblAchievementDescription0.SetHeight(15),this.lblAchievementDescription0.FMargins.SetLeft(0),this.lblAchievementDescription0.FMargins.SetTop(0),this.lblAchievementDescription0.FMargins.SetRight(0),this.lblAchievementDescription0.FMargins.SetBottom(0),this.lblAchievementDescription0.SetAlign(5),this.lblAchievementDescription0.SetCaption("Select which language to display"),this.lblAchievementDescription0.FFont.FCharset=1,this.lblAchievementDescription0.FFont.SetColor(16777215),this.lblAchievementDescription0.FFont.SetHeight(-14),this.lblAchievementDescription0.FFont.SetName("Segoe UI"),this.lblAchievementDescription0.FFont.SetStyle({}),this.lblAchievementDescription0.SetHeightPercent(100),this.lblAchievementDescription0.SetLayout(1),this.lblAchievementDescription0.SetParentFont(!1),this.lblAchievementDescription0.SetWidthPercent(100),this.lblAchievementName0.SetParentComponent(this.layAchievementText0),this.lblAchievementName0.SetName("lblAchievementName0"),this.lblAchievementName0.SetLeft(0),this.lblAchievementName0.SetTop(4),this.lblAchievementName0.SetWidth(1329),this.lblAchievementName0.SetHeight(25),this.lblAchievementName0.FMargins.SetLeft(0),this.lblAchievementName0.FMargins.SetTop(0),this.lblAchievementName0.FMargins.SetRight(0),this.lblAchievementName0.FMargins.SetBottom(0),this.lblAchievementName0.SetAlign(1),this.lblAchievementName0.SetCaption("Language"),this.lblAchievementName0.FFont.FCharset=1,this.lblAchievementName0.FFont.SetColor(16777215),this.lblAchievementName0.FFont.SetHeight(-19),this.lblAchievementName0.FFont.SetName("Segoe UI"),this.lblAchievementName0.FFont.SetStyle({}),this.lblAchievementName0.SetHeightPercent(100),this.lblAchievementName0.SetParentFont(!1),this.lblAchievementName0.SetWidthPercent(100),this.WebComboBox1.SetParentComponent(this.layLanguage),this.WebComboBox1.SetName("WebComboBox1"),this.WebComboBox1.SetAlignWithMargins(!0),this.WebComboBox1.SetLeft(1395),this.WebComboBox1.SetTop(13),this.WebComboBox1.SetWidth(175),this.WebComboBox1.SetHeight(23),this.WebComboBox1.FMargins.SetLeft(0),this.WebComboBox1.FMargins.SetTop(13),this.WebComboBox1.FMargins.SetRight(13),this.WebComboBox1.FMargins.SetBottom(13),this.WebComboBox1.SetAlign(4),this.WebComboBox1.SetHeightPercent(100),this.WebComboBox1.SetText("English"),this.WebComboBox1.SetWidthPercent(100),this.WebComboBox1.SetItemIndex(0),this.WebComboBox1.FItems.BeginUpdate();try{this.WebComboBox1.FItems.Clear(),this.WebComboBox1.FItems.Add("English")}finally{this.WebComboBox1.FItems.EndUpdate()}this.layAppInfo.SetParentComponent(this.laySettingsContainer),this.layAppInfo.SetName("layAppInfo"),this.layAppInfo.SetAlignWithMargins(!0),this.layAppInfo.SetLeft(20),this.layAppInfo.SetTop(171),this.layAppInfo.SetWidth(1583),this.layAppInfo.SetHeight(76),this.layAppInfo.FMargins.SetLeft(20),this.layAppInfo.FMargins.SetTop(0),this.layAppInfo.FMargins.SetRight(20),this.layAppInfo.FMargins.SetBottom(10),this.layAppInfo.SetAlign(1),this.layAppInfo.SetBorderColor(16777215),this.layAppInfo.SetChildOrderEx(2),this.layAppInfo.SetColor(2366745),this.layAppInfo.SetShowCaption(!1),this.WebImageControl1.SetParentComponent(this.layAppInfo),this.WebImageControl1.SetName("WebImageControl1"),this.WebImageControl1.SetAlignWithMargins(!0),this.WebImageControl1.SetLeft(13),this.WebImageControl1.SetTop(18),this.WebImageControl1.SetWidth(40),this.WebImageControl1.SetHeight(40),this.WebImageControl1.FMargins.SetLeft(13),this.WebImageControl1.FMargins.SetTop(18),this.WebImageControl1.FMargins.SetRight(13),this.WebImageControl1.FMargins.SetBottom(18),this.WebImageControl1.SetHeightPercent(100),this.WebImageControl1.SetWidthPercent(100),this.WebImageControl1.SetAlign(3),this.WebImageControl1.SetURL("assets/halo-mcc.png"),this.WebPanel2.SetParentComponent(this.layAppInfo),this.WebPanel2.SetName("WebPanel2"),this.WebPanel2.SetAlignWithMargins(!0),this.WebPanel2.SetLeft(66),this.WebPanel2.SetTop(13),this.WebPanel2.SetWidth(1395),this.WebPanel2.SetHeight(50),this.WebPanel2.FMargins.SetLeft(0),this.WebPanel2.FMargins.SetTop(13),this.WebPanel2.FMargins.SetRight(0),this.WebPanel2.FMargins.SetBottom(13),this.WebPanel2.SetAlign(5),this.WebPanel2.SetBorderStyle(0),this.WebPanel2.SetChildOrderEx(1),this.WebPanel2.SetColor(-1),this.WebPanel2.FPadding.SetTop(4),this.WebPanel2.FPadding.SetBottom(6),this.WebPanel2.SetShowCaption(!1),this.lblAppDescription.SetParentComponent(this.WebPanel2),this.lblAppDescription.SetName("lblAppDescription"),this.lblAppDescription.SetLeft(0),this.lblAppDescription.SetTop(29),this.lblAppDescription.SetWidth(1395),this.lblAppDescription.SetHeight(15),this.lblAppDescription.FMargins.SetLeft(0),this.lblAppDescription.FMargins.SetTop(0),this.lblAppDescription.FMargins.SetRight(0),this.lblAppDescription.FMargins.SetBottom(0),this.lblAppDescription.SetAlign(5),this.lblAppDescription.SetCaption("Version 1.0.4 | WEB | RELEASE | 2024/04/02"),this.lblAppDescription.FFont.FCharset=1,this.lblAppDescription.FFont.SetColor(16777215),this.lblAppDescription.FFont.SetHeight(-14),this.lblAppDescription.FFont.SetName("Segoe UI"),this.lblAppDescription.FFont.SetStyle({}),this.lblAppDescription.SetHeightPercent(100),this.lblAppDescription.SetLayout(1),this.lblAppDescription.SetParentFont(!1),this.lblAppDescription.SetWidthPercent(100),this.lblAppInfo.SetParentComponent(this.WebPanel2),this.lblAppInfo.SetName("lblAppInfo"),this.lblAppInfo.SetLeft(0),this.lblAppInfo.SetTop(4),this.lblAppInfo.SetWidth(1395),this.lblAppInfo.SetHeight(25),this.lblAppInfo.FMargins.SetLeft(0),this.lblAppInfo.FMargins.SetTop(0),this.lblAppInfo.FMargins.SetRight(0),this.lblAppInfo.FMargins.SetBottom(0),this.lblAppInfo.SetAlign(1),this.lblAppInfo.SetCaption("Halo Achievement Tracker"),this.lblAppInfo.FFont.FCharset=1,this.lblAppInfo.FFont.SetColor(16777215),this.lblAppInfo.FFont.SetHeight(-19),this.lblAppInfo.FFont.SetName("Segoe UI"),this.lblAppInfo.FFont.SetStyle({}),this.lblAppInfo.SetHeightPercent(100),this.lblAppInfo.SetParentFont(!1),this.lblAppInfo.SetWidthPercent(100),this.btnChangeLog.SetParentComponent(this.layAppInfo),this.btnChangeLog.SetName("btnChangeLog"),this.btnChangeLog.SetAlignWithMargins(!0),this.btnChangeLog.SetLeft(1520),this.btnChangeLog.SetTop(13),this.btnChangeLog.SetWidth(50),this.btnChangeLog.SetHeight(50),this.btnChangeLog.SetControlCursor(21),this.btnChangeLog.SetHint("View Change Log"),this.btnChangeLog.FMargins.SetLeft(0),this.btnChangeLog.FMargins.SetTop(13),this.btnChangeLog.FMargins.SetRight(13),this.btnChangeLog.FMargins.SetBottom(13),this.btnChangeLog.SetAlign(4),this.btnChangeLog.SetColor(14120960),this.btnChangeLog.SetChildOrderEx(4),this.btnChangeLog.FFont.FCharset=1,this.btnChangeLog.FFont.SetColor(16777215),this.btnChangeLog.FFont.SetHeight(-21),this.btnChangeLog.FFont.SetName("Segoe UI"),this.btnChangeLog.FFont.SetStyle({}),this.btnChangeLog.SetHeightPercent(100),this.btnChangeLog.SetParentFont(!1),this.btnChangeLog.SetShowHint(!0),this.btnChangeLog.SetWidthPercent(100),this.SetEvent$1(this.btnChangeLog,this,"OnClick","btnChangeLogClick"),this.SetEvent$1(this.btnChangeLog,this,"OnMouseEnter","ButtonMouseEnter"),this.SetEvent$1(this.btnChangeLog,this,"OnMouseLeave","ButtonMouseLeave"),this.btnCopyAppInfo.SetParentComponent(this.layAppInfo),this.btnCopyAppInfo.SetName("btnCopyAppInfo"),this.btnCopyAppInfo.SetAlignWithMargins(!0),this.btnCopyAppInfo.SetLeft(1461),this.btnCopyAppInfo.SetTop(13),this.btnCopyAppInfo.SetWidth(50),this.btnCopyAppInfo.SetHeight(50),this.btnCopyAppInfo.SetControlCursor(21),this.btnCopyAppInfo.SetHint("Copy App Info to Clipboard"),this.btnCopyAppInfo.FMargins.SetLeft(0),this.btnCopyAppInfo.FMargins.SetTop(13),this.btnCopyAppInfo.FMargins.SetRight(9),this.btnCopyAppInfo.FMargins.SetBottom(13),this.btnCopyAppInfo.SetAlign(4),this.btnCopyAppInfo.SetColor(14120960),this.btnCopyAppInfo.SetChildOrderEx(4),this.btnCopyAppInfo.FFont.FCharset=1,this.btnCopyAppInfo.FFont.SetColor(16777215),this.btnCopyAppInfo.FFont.SetHeight(-21),this.btnCopyAppInfo.FFont.SetName("Segoe UI"),this.btnCopyAppInfo.FFont.SetStyle({}),this.btnCopyAppInfo.SetHeightPercent(100),this.btnCopyAppInfo.SetParentFont(!1),this.btnCopyAppInfo.SetShowHint(!0),this.btnCopyAppInfo.SetWidthPercent(100),this.SetEvent$1(this.btnCopyAppInfo,this,"OnClick","btnCopyAppInfoClick"),this.SetEvent$1(this.btnCopyAppInfo,this,"OnMouseEnter","ButtonMouseEnter"),this.SetEvent$1(this.btnCopyAppInfo,this,"OnMouseLeave","ButtonMouseLeave"),this.layUsefulLinks.SetParentComponent(this.laySettingsContainer),this.layUsefulLinks.SetName("layUsefulLinks"),this.layUsefulLinks.SetAlignWithMargins(!0),this.layUsefulLinks.SetLeft(20),this.layUsefulLinks.SetTop(257),this.layUsefulLinks.SetWidth(1583),this.layUsefulLinks.SetHeight(176),this.layUsefulLinks.FMargins.SetLeft(20),this.layUsefulLinks.FMargins.SetTop(0),this.layUsefulLinks.FMargins.SetRight(20),this.layUsefulLinks.FMargins.SetBottom(10),this.layUsefulLinks.SetAlign(1),this.layUsefulLinks.SetBorderColor(16777215),this.layUsefulLinks.SetChildOrderEx(2),this.layUsefulLinks.SetColor(2366745),this.layUsefulLinks.SetShowCaption(!1),this.layUsefulLinksTop.SetParentComponent(this.layUsefulLinks),this.layUsefulLinksTop.SetName("layUsefulLinksTop"),this.layUsefulLinksTop.SetAlignWithMargins(!0),this.layUsefulLinksTop.SetLeft(0),this.layUsefulLinksTop.SetTop(0),this.layUsefulLinksTop.SetWidth(1583),this.layUsefulLinksTop.SetHeight(76),this.layUsefulLinksTop.FMargins.SetLeft(0),this.layUsefulLinksTop.FMargins.SetTop(0),this.layUsefulLinksTop.FMargins.SetRight(0),this.layUsefulLinksTop.FMargins.SetBottom(10),this.layUsefulLinksTop.SetAlign(1),this.layUsefulLinksTop.SetBorderColor(16777215),this.layUsefulLinksTop.SetBorderStyle(0),this.layUsefulLinksTop.SetChildOrderEx(2),this.layUsefulLinksTop.SetColor(2366745),this.layUsefulLinksTop.SetShowCaption(!1),this.WebImageControl2.SetParentComponent(this.layUsefulLinksTop),this.WebImageControl2.SetName("WebImageControl2"),this.WebImageControl2.SetAlignWithMargins(!0),this.WebImageControl2.SetLeft(13),this.WebImageControl2.SetTop(18),this.WebImageControl2.SetWidth(40),this.WebImageControl2.SetHeight(40),this.WebImageControl2.FMargins.SetLeft(13),this.WebImageControl2.FMargins.SetTop(18),this.WebImageControl2.FMargins.SetRight(13),this.WebImageControl2.FMargins.SetBottom(18),this.WebImageControl2.SetHeightPercent(100),this.WebImageControl2.SetWidthPercent(100),this.WebImageControl2.SetAlign(3),this.WebImageControl2.SetURL("assets/link.svg"),this.WebPanel4.SetParentComponent(this.layUsefulLinksTop),this.WebPanel4.SetName("WebPanel4"),this.WebPanel4.SetAlignWithMargins(!0),this.WebPanel4.SetLeft(66),this.WebPanel4.SetTop(13),this.WebPanel4.SetWidth(1517),this.WebPanel4.SetHeight(50),this.WebPanel4.FMargins.SetLeft(0),this.WebPanel4.FMargins.SetTop(13),this.WebPanel4.FMargins.SetRight(0),this.WebPanel4.FMargins.SetBottom(13),this.WebPanel4.SetAlign(5),this.WebPanel4.SetBorderStyle(0),this.WebPanel4.SetChildOrderEx(1),this.WebPanel4.SetColor(-1),this.WebPanel4.FPadding.SetTop(4),this.WebPanel4.FPadding.SetBottom(6),this.WebPanel4.SetShowCaption(!1),this.WebLabel4.SetParentComponent(this.WebPanel4),this.WebLabel4.SetName("WebLabel4"),this.WebLabel4.SetLeft(0),this.WebLabel4.SetTop(4),this.WebLabel4.SetWidth(1517),this.WebLabel4.SetHeight(40),this.WebLabel4.FMargins.SetLeft(0),this.WebLabel4.FMargins.SetTop(0),this.WebLabel4.FMargins.SetRight(0),this.WebLabel4.FMargins.SetBottom(0),this.WebLabel4.SetAlign(5),this.WebLabel4.SetCaption("Useful Links"),this.WebLabel4.FFont.FCharset=1,this.WebLabel4.FFont.SetColor(16777215),this.WebLabel4.FFont.SetHeight(-19),this.WebLabel4.FFont.SetName("Segoe UI"),this.WebLabel4.FFont.SetStyle({}),this.WebLabel4.SetHeightPercent(100),this.WebLabel4.SetLayout(1),this.WebLabel4.SetParentFont(!1),this.WebLabel4.SetWidthPercent(100),this.layNavSourceCode.SetParentComponent(this.layUsefulLinks),this.layNavSourceCode.SetName("layNavSourceCode"),this.layNavSourceCode.SetLeft(58),this.layNavSourceCode.SetTop(78),this.layNavSourceCode.SetWidth(159),this.layNavSourceCode.SetHeight(42),this.layNavSourceCode.SetBorderStyle(0),this.layNavSourceCode.SetChildOrderEx(1),this.layNavSourceCode.SetColor(16711422),this.layNavSourceCode.FFont.FCharset=1,this.layNavSourceCode.FFont.SetColor(0),this.layNavSourceCode.FFont.SetHeight(-21),this.layNavSourceCode.FFont.SetName("Segoe UI"),this.layNavSourceCode.FFont.SetStyle({}),this.layNavSourceCode.SetParentFont(!1),this.layNavSourceCode.SetShowCaption(!1),this.btnNavSourceCode.SetParentComponent(this.layNavSourceCode),this.btnNavSourceCode.SetName("btnNavSourceCode"),this.btnNavSourceCode.SetAlignWithMargins(!0),this.btnNavSourceCode.SetLeft(5),this.btnNavSourceCode.SetTop(5),this.btnNavSourceCode.SetWidth(149),this.btnNavSourceCode.SetHeight(32),this.btnNavSourceCode.SetControlCursor(21),this.btnNavSourceCode.FMargins.SetLeft(5),this.btnNavSourceCode.FMargins.SetTop(5),this.btnNavSourceCode.FMargins.SetRight(5),this.btnNavSourceCode.FMargins.SetBottom(5),this.btnNavSourceCode.SetAlign(5),this.btnNavSourceCode.SetBorderStyle(0),this.btnNavSourceCode.SetColor(-1),this.btnNavSourceCode.FFont.FCharset=1,this.btnNavSourceCode.FFont.SetColor(0),this.btnNavSourceCode.FFont.SetHeight(-21),this.btnNavSourceCode.FFont.SetName("Segoe UI"),this.btnNavSourceCode.FFont.SetStyle({}),this.btnNavSourceCode.SetParentFont(!1),this.btnNavSourceCode.SetShowCaption(!1),this.SetEvent$1(this.btnNavSourceCode,this,"OnClick","btnNavSourceCodeClick"),this.SetEvent$1(this.btnNavSourceCode,this,"OnMouseEnter","LinkMouseEnter"),this.SetEvent$1(this.btnNavSourceCode,this,"OnMouseLeave","LinkMouseLeave"),this.lblNavSourceCode.SetParentComponent(this.btnNavSourceCode),this.lblNavSourceCode.SetName("lblNavSourceCode"),this.lblNavSourceCode.SetAlignWithMargins(!0),this.lblNavSourceCode.SetLeft(41),this.lblNavSourceCode.SetTop(4),this.lblNavSourceCode.SetWidth(108),this.lblNavSourceCode.SetHeight(28),this.lblNavSourceCode.FMargins.SetTop(4),this.lblNavSourceCode.FMargins.SetRight(0),this.lblNavSourceCode.FMargins.SetBottom(0),this.lblNavSourceCode.SetAlign(5),this.lblNavSourceCode.SetCaption("Source Code"),this.lblNavSourceCode.FFont.FCharset=1,this.lblNavSourceCode.FFont.SetColor(16777215),this.lblNavSourceCode.FFont.SetHeight(-15),this.lblNavSourceCode.FFont.SetName("Segoe UI"),this.lblNavSourceCode.FFont.SetStyle({}),this.lblNavSourceCode.SetHeightStyle(2),this.lblNavSourceCode.SetHeightPercent(100),this.lblNavSourceCode.SetHTMLType(1),this.lblNavSourceCode.SetLayout(1),this.lblNavSourceCode.SetParentFont(!1),this.lblNavSourceCode.SetWidthPercent(100),this.SetEvent$1(this.lblNavSourceCode,this,"OnClick","btnNavSourceCodeClick"),this.imgNavSourceCode.SetParentComponent(this.btnNavSourceCode),this.imgNavSourceCode.SetName("imgNavSourceCode"),this.imgNavSourceCode.SetAlignWithMargins(!0),this.imgNavSourceCode.SetLeft(3),this.imgNavSourceCode.SetTop(0),this.imgNavSourceCode.SetWidth(32),this.imgNavSourceCode.SetHeight(32),this.imgNavSourceCode.FMargins.SetTop(0),this.imgNavSourceCode.FMargins.SetBottom(0),this.imgNavSourceCode.SetHeightPercent(100),this.imgNavSourceCode.SetWidthPercent(100),this.imgNavSourceCode.SetAlign(3),this.imgNavSourceCode.SetChildOrderEx(2),this.SetEvent$1(this.imgNavSourceCode,this,"OnClick","btnNavSourceCodeClick"),this.imgNavSourceCode.SetURL("assets/github.svg"),this.layNavLicense.SetParentComponent(this.layUsefulLinks),this.layNavLicense.SetName("layNavLicense"),this.layNavLicense.SetLeft(378),this.layNavLicense.SetTop(78),this.layNavLicense.SetWidth(127),this.layNavLicense.SetHeight(42),this.layNavLicense.SetBorderStyle(0),this.layNavLicense.SetChildOrderEx(1),this.layNavLicense.SetColor(16711422),this.layNavLicense.FFont.FCharset=1,this.layNavLicense.FFont.SetColor(0),this.layNavLicense.FFont.SetHeight(-21),this.layNavLicense.FFont.SetName("Segoe UI"),this.layNavLicense.FFont.SetStyle({}),this.layNavLicense.SetParentFont(!1),this.layNavLicense.SetShowCaption(!1),this.btnNavLicense.SetParentComponent(this.layNavLicense),this.btnNavLicense.SetName("btnNavLicense"),this.btnNavLicense.SetAlignWithMargins(!0),this.btnNavLicense.SetLeft(5),this.btnNavLicense.SetTop(5),this.btnNavLicense.SetWidth(117),this.btnNavLicense.SetHeight(32),this.btnNavLicense.SetControlCursor(21),this.btnNavLicense.FMargins.SetLeft(5),this.btnNavLicense.FMargins.SetTop(5),this.btnNavLicense.FMargins.SetRight(5),this.btnNavLicense.FMargins.SetBottom(5),this.btnNavLicense.SetAlign(5),this.btnNavLicense.SetBorderStyle(0),this.btnNavLicense.SetColor(-1),this.btnNavLicense.FFont.FCharset=1,this.btnNavLicense.FFont.SetColor(0),this.btnNavLicense.FFont.SetHeight(-21),this.btnNavLicense.FFont.SetName("Segoe UI"),this.btnNavLicense.FFont.SetStyle({}),this.btnNavLicense.SetParentFont(!1),this.btnNavLicense.SetShowCaption(!1),this.SetEvent$1(this.btnNavLicense,this,"OnClick","btnNavLicenseClick"),this.SetEvent$1(this.btnNavLicense,this,"OnMouseEnter","LinkMouseEnter"),this.SetEvent$1(this.btnNavLicense,this,"OnMouseLeave","LinkMouseLeave"),this.lblNavLicense.SetParentComponent(this.btnNavLicense),this.lblNavLicense.SetName("lblNavLicense"),this.lblNavLicense.SetAlignWithMargins(!0),this.lblNavLicense.SetLeft(41),this.lblNavLicense.SetTop(4),this.lblNavLicense.SetWidth(76),this.lblNavLicense.SetHeight(28),this.lblNavLicense.FMargins.SetTop(4),this.lblNavLicense.FMargins.SetRight(0),this.lblNavLicense.FMargins.SetBottom(0),this.lblNavLicense.SetAlign(5),this.lblNavLicense.SetCaption("License"),this.lblNavLicense.FFont.FCharset=1,this.lblNavLicense.FFont.SetColor(16777215),this.lblNavLicense.FFont.SetHeight(-15),this.lblNavLicense.FFont.SetName("Segoe UI"),this.lblNavLicense.FFont.SetStyle({}),this.lblNavLicense.SetHeightStyle(2),this.lblNavLicense.SetHeightPercent(100),this.lblNavLicense.SetHTMLType(1),this.lblNavLicense.SetLayout(1),this.lblNavLicense.SetParentFont(!1),this.lblNavLicense.SetWidthPercent(100),this.SetEvent$1(this.lblNavLicense,this,"OnClick","btnNavLicenseClick"),this.imgNavLicense.SetParentComponent(this.btnNavLicense),this.imgNavLicense.SetName("imgNavLicense"),this.imgNavLicense.SetAlignWithMargins(!0),this.imgNavLicense.SetLeft(3),this.imgNavLicense.SetTop(0),this.imgNavLicense.SetWidth(32),this.imgNavLicense.SetHeight(32),this.imgNavLicense.FMargins.SetTop(0),this.imgNavLicense.FMargins.SetBottom(0),this.imgNavLicense.SetHeightPercent(100),this.imgNavLicense.SetWidthPercent(100),this.imgNavLicense.SetAlign(3),this.imgNavLicense.SetChildOrderEx(2),this.SetEvent$1(this.imgNavLicense,this,"OnClick","btnNavLicenseClick"),this.imgNavLicense.SetURL("assets/asterisk.svg"),this.layNavDownloadApp.SetParentComponent(this.layUsefulLinks),this.layNavDownloadApp.SetName("layNavDownloadApp"),this.layNavDownloadApp.SetLeft(58),this.layNavDownloadApp.SetTop(121),this.layNavDownloadApp.SetWidth(175),this.layNavDownloadApp.SetHeight(42),this.layNavDownloadApp.SetBorderStyle(0),this.layNavDownloadApp.SetChildOrderEx(1),this.layNavDownloadApp.SetColor(16711422),this.layNavDownloadApp.FFont.FCharset=1,this.layNavDownloadApp.FFont.SetColor(0),this.layNavDownloadApp.FFont.SetHeight(-21),this.layNavDownloadApp.FFont.SetName("Segoe UI"),this.layNavDownloadApp.FFont.SetStyle({}),this.layNavDownloadApp.SetParentFont(!1),this.layNavDownloadApp.SetShowCaption(!1),this.btnNavDownloadApp.SetParentComponent(this.layNavDownloadApp),this.btnNavDownloadApp.SetName("btnNavDownloadApp"),this.btnNavDownloadApp.SetAlignWithMargins(!0),this.btnNavDownloadApp.SetLeft(5),this.btnNavDownloadApp.SetTop(5),this.btnNavDownloadApp.SetWidth(165),this.btnNavDownloadApp.SetHeight(32),this.btnNavDownloadApp.SetControlCursor(21),this.btnNavDownloadApp.FMargins.SetLeft(5),this.btnNavDownloadApp.FMargins.SetTop(5),this.btnNavDownloadApp.FMargins.SetRight(5),this.btnNavDownloadApp.FMargins.SetBottom(5),this.btnNavDownloadApp.SetAlign(5),this.btnNavDownloadApp.SetBorderStyle(0),this.btnNavDownloadApp.SetColor(-1),this.btnNavDownloadApp.FFont.FCharset=1,this.btnNavDownloadApp.FFont.SetColor(0),this.btnNavDownloadApp.FFont.SetHeight(-21),this.btnNavDownloadApp.FFont.SetName("Segoe UI"),this.btnNavDownloadApp.FFont.SetStyle({}),this.btnNavDownloadApp.SetParentFont(!1),this.btnNavDownloadApp.SetShowCaption(!1),this.SetEvent$1(this.btnNavDownloadApp,this,"OnClick","btnNavDownloadAppClick"),this.SetEvent$1(this.btnNavDownloadApp,this,"OnMouseEnter","LinkMouseEnter"),this.SetEvent$1(this.btnNavDownloadApp,this,"OnMouseLeave","LinkMouseLeave"),this.lblNavDownloadApp.SetParentComponent(this.btnNavDownloadApp),this.lblNavDownloadApp.SetName("lblNavDownloadApp"),this.lblNavDownloadApp.SetAlignWithMargins(!0),this.lblNavDownloadApp.SetLeft(41),this.lblNavDownloadApp.SetTop(4),this.lblNavDownloadApp.SetWidth(124),this.lblNavDownloadApp.SetHeight(28),this.lblNavDownloadApp.FMargins.SetTop(4),this.lblNavDownloadApp.FMargins.SetRight(0),this.lblNavDownloadApp.FMargins.SetBottom(0),this.lblNavDownloadApp.SetAlign(5),this.lblNavDownloadApp.SetCaption("Download App"),this.lblNavDownloadApp.FFont.FCharset=1,this.lblNavDownloadApp.FFont.SetColor(16777215),this.lblNavDownloadApp.FFont.SetHeight(-15),this.lblNavDownloadApp.FFont.SetName("Segoe UI"),this.lblNavDownloadApp.FFont.SetStyle({}),this.lblNavDownloadApp.SetHeightStyle(2),this.lblNavDownloadApp.SetHeightPercent(100),this.lblNavDownloadApp.SetHTMLType(1),this.lblNavDownloadApp.SetLayout(1),this.lblNavDownloadApp.SetParentFont(!1),this.lblNavDownloadApp.SetWidthPercent(100),this.SetEvent$1(this.lblNavDownloadApp,this,"OnClick","btnNavDownloadAppClick"),this.imgNavDownloadApp.SetParentComponent(this.btnNavDownloadApp),this.imgNavDownloadApp.SetName("imgNavDownloadApp"),this.imgNavDownloadApp.SetAlignWithMargins(!0),this.imgNavDownloadApp.SetLeft(3),this.imgNavDownloadApp.SetTop(0),this.imgNavDownloadApp.SetWidth(32),this.imgNavDownloadApp.SetHeight(32),this.imgNavDownloadApp.FMargins.SetTop(0),this.imgNavDownloadApp.FMargins.SetBottom(0),this.imgNavDownloadApp.SetHeightPercent(100),this.imgNavDownloadApp.SetWidthPercent(100),this.imgNavDownloadApp.SetAlign(3),this.imgNavDownloadApp.SetChildOrderEx(2),this.SetEvent$1(this.imgNavDownloadApp,this,"OnClick","btnNavDownloadAppClick"),this.imgNavDownloadApp.SetURL("assets/app.svg"),this.layNavReportAProblem.SetParentComponent(this.layUsefulLinks),this.layNavReportAProblem.SetName("layNavReportAProblem"),this.layNavReportAProblem.SetLeft(378),this.layNavReportAProblem.SetTop(121),this.layNavReportAProblem.SetWidth(191),this.layNavReportAProblem.SetHeight(42),this.layNavReportAProblem.SetBorderStyle(0),this.layNavReportAProblem.SetChildOrderEx(1),this.layNavReportAProblem.SetColor(16711422),this.layNavReportAProblem.FFont.FCharset=1,this.layNavReportAProblem.FFont.SetColor(0),this.layNavReportAProblem.FFont.SetHeight(-21),this.layNavReportAProblem.FFont.SetName("Segoe UI"),this.layNavReportAProblem.FFont.SetStyle({}),this.layNavReportAProblem.SetParentFont(!1),this.layNavReportAProblem.SetShowCaption(!1),this.btnNavReportAProblem.SetParentComponent(this.layNavReportAProblem),this.btnNavReportAProblem.SetName("btnNavReportAProblem"),this.btnNavReportAProblem.SetAlignWithMargins(!0),this.btnNavReportAProblem.SetLeft(5),this.btnNavReportAProblem.SetTop(5),this.btnNavReportAProblem.SetWidth(181),this.btnNavReportAProblem.SetHeight(32),this.btnNavReportAProblem.SetControlCursor(21),this.btnNavReportAProblem.FMargins.SetLeft(5),this.btnNavReportAProblem.FMargins.SetTop(5),this.btnNavReportAProblem.FMargins.SetRight(5),this.btnNavReportAProblem.FMargins.SetBottom(5),this.btnNavReportAProblem.SetAlign(5),this.btnNavReportAProblem.SetBorderStyle(0),this.btnNavReportAProblem.SetColor(-1),this.btnNavReportAProblem.FFont.FCharset=1,this.btnNavReportAProblem.FFont.SetColor(0),this.btnNavReportAProblem.FFont.SetHeight(-21),this.btnNavReportAProblem.FFont.SetName("Segoe UI"),this.btnNavReportAProblem.FFont.SetStyle({}),this.btnNavReportAProblem.SetParentFont(!1),this.btnNavReportAProblem.SetShowCaption(!1),this.SetEvent$1(this.btnNavReportAProblem,this,"OnClick","btnNavReportAProblemClick"),this.SetEvent$1(this.btnNavReportAProblem,this,"OnMouseEnter","LinkMouseEnter"),this.SetEvent$1(this.btnNavReportAProblem,this,"OnMouseLeave","LinkMouseLeave"),this.lblNavReportAProblem.SetParentComponent(this.btnNavReportAProblem),this.lblNavReportAProblem.SetName("lblNavReportAProblem"),this.lblNavReportAProblem.SetAlignWithMargins(!0),this.lblNavReportAProblem.SetLeft(41),this.lblNavReportAProblem.SetTop(4),this.lblNavReportAProblem.SetWidth(140),this.lblNavReportAProblem.SetHeight(28),this.lblNavReportAProblem.FMargins.SetTop(4),this.lblNavReportAProblem.FMargins.SetRight(0),this.lblNavReportAProblem.FMargins.SetBottom(0),this.lblNavReportAProblem.SetAlign(5),this.lblNavReportAProblem.SetCaption("Report a problem"),this.lblNavReportAProblem.FFont.FCharset=1,this.lblNavReportAProblem.FFont.SetColor(16777215),this.lblNavReportAProblem.FFont.SetHeight(-15),this.lblNavReportAProblem.FFont.SetName("Segoe UI"),this.lblNavReportAProblem.FFont.SetStyle({}),this.lblNavReportAProblem.SetHeightStyle(2),this.lblNavReportAProblem.SetHeightPercent(100),this.lblNavReportAProblem.SetHTMLType(1),this.lblNavReportAProblem.SetLayout(1),this.lblNavReportAProblem.SetParentFont(!1),this.lblNavReportAProblem.SetWidthPercent(100),this.SetEvent$1(this.lblNavReportAProblem,this,"OnClick","btnNavReportAProblemClick"),this.imgNavReportAProblem.SetParentComponent(this.btnNavReportAProblem),this.imgNavReportAProblem.SetName("imgNavReportAProblem"),this.imgNavReportAProblem.SetAlignWithMargins(!0),this.imgNavReportAProblem.SetLeft(3),this.imgNavReportAProblem.SetTop(0),this.imgNavReportAProblem.SetWidth(32),this.imgNavReportAProblem.SetHeight(32),this.imgNavReportAProblem.FMargins.SetTop(0),this.imgNavReportAProblem.FMargins.SetBottom(0),this.imgNavReportAProblem.SetHeightPercent(100),this.imgNavReportAProblem.SetWidthPercent(100),this.imgNavReportAProblem.SetAlign(3),this.imgNavReportAProblem.SetChildOrderEx(2),this.SetEvent$1(this.imgNavReportAProblem,this,"OnClick","btnNavReportAProblemClick"),this.imgNavReportAProblem.SetURL("assets/bug.svg")}finally{this.laySettingsContainer.AfterLoadDFMValues(),this.layGame.AfterLoadDFMValues(),this.lblGameName.AfterLoadDFMValues(),this.imgGameLogo.AfterLoadDFMValues(),this.layLanguage.AfterLoadDFMValues(),this.imgAchievement0.AfterLoadDFMValues(),this.layAchievementText0.AfterLoadDFMValues(),this.lblAchievementDescription0.AfterLoadDFMValues(),this.lblAchievementName0.AfterLoadDFMValues(),this.WebComboBox1.AfterLoadDFMValues(),this.layAppInfo.AfterLoadDFMValues(),this.WebImageControl1.AfterLoadDFMValues(),this.WebPanel2.AfterLoadDFMValues(),this.lblAppDescription.AfterLoadDFMValues(),this.lblAppInfo.AfterLoadDFMValues(),this.btnChangeLog.AfterLoadDFMValues(),this.btnCopyAppInfo.AfterLoadDFMValues(),this.layUsefulLinks.AfterLoadDFMValues(),this.layUsefulLinksTop.AfterLoadDFMValues(),this.WebImageControl2.AfterLoadDFMValues(),this.WebPanel4.AfterLoadDFMValues(),this.WebLabel4.AfterLoadDFMValues(),this.layNavSourceCode.AfterLoadDFMValues(),this.btnNavSourceCode.AfterLoadDFMValues(),this.lblNavSourceCode.AfterLoadDFMValues(),this.imgNavSourceCode.AfterLoadDFMValues(),this.layNavLicense.AfterLoadDFMValues(),this.btnNavLicense.AfterLoadDFMValues(),this.lblNavLicense.AfterLoadDFMValues(),this.imgNavLicense.AfterLoadDFMValues(),this.layNavDownloadApp.AfterLoadDFMValues(),this.btnNavDownloadApp.AfterLoadDFMValues(),this.lblNavDownloadApp.AfterLoadDFMValues(),this.imgNavDownloadApp.AfterLoadDFMValues(),this.layNavReportAProblem.AfterLoadDFMValues(),this.btnNavReportAProblem.AfterLoadDFMValues(),this.lblNavReportAProblem.AfterLoadDFMValues(),this.imgNavReportAProblem.AfterLoadDFMValues()}};var e=this.$rtti;e.addField("laySettingsContainer",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("layGame",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblGameName",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgGameLogo",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layLanguage",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("imgAchievement0",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layAchievementText0",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblAchievementDescription0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementName0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("WebComboBox1",pas["WEBLib.StdCtrls"].$rtti.TComboBox),e.addField("layAppInfo",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("WebImageControl1",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("WebPanel2",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblAppDescription",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAppInfo",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("btnChangeLog",pas["WEBLib.StdCtrls"].$rtti.TButton),e.addField("btnCopyAppInfo",pas["WEBLib.StdCtrls"].$rtti.TButton),e.addField("layUsefulLinks",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("layUsefulLinksTop",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("WebImageControl2",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("WebPanel4",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("WebLabel4",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("layNavSourceCode",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("btnNavSourceCode",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblNavSourceCode",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgNavSourceCode",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layNavLicense",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("btnNavLicense",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblNavLicense",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgNavLicense",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layNavDownloadApp",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("btnNavDownloadApp",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblNavDownloadApp",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgNavDownloadApp",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layNavReportAProblem",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("btnNavReportAProblem",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblNavReportAProblem",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgNavReportAProblem",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addMethod("ButtonMouseEnter",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("ButtonMouseLeave",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("LinkMouseEnter",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("LinkMouseLeave",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("WebFrameResize",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnNavSourceCodeClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnNavLicenseClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnNavReportAProblemClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnNavDownloadAppClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnCopyAppInfoClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnChangeLogClick",0,[["Sender",pas.System.$rtti.TObject]])}))})),rtl.module("uSearch",["System","SysUtils","Classes","JS","Web","WEBLib.Graphics","WEBLib.Controls","WEBLib.Forms","WEBLib.Dialogs","WEBLib.StdCtrls","WEBLib.StdCtrls","WEBLib.Controls","WEBLib.ExtCtrls","uColors"],(function(){"use strict";rtl.createClass(this,"TFrame_Search",pas["WEBLib.Forms"].TFrame,(function(){this.$init=function(){pas["WEBLib.Forms"].TFrame.$init.call(this),this.layBody=null,this.laySearch=null,this.imgLoginHeader=null,this.lblDescription=null,this.lblTitle=null,this.lblSearch=null,this.edtSearch=null,this.btnSearch=null,this.PageCreated=!1},this.$final=function(){this.layBody=void 0,this.laySearch=void 0,this.imgLoginHeader=void 0,this.lblDescription=void 0,this.lblTitle=void 0,this.lblSearch=void 0,this.edtSearch=void 0,this.btnSearch=void 0,pas["WEBLib.Forms"].TFrame.$final.call(this)},this.imgLoginHeaderLoaded=function(e){this.imgLoginHeader.SetHeightStyle(2),this.laySearch.SetHeight(this.lblSearch.GetTop()+this.lblSearch.GetHeight()+40),this.laySearch.SetHeight(this.lblDescription.GetTop()+this.lblDescription.GetHeight()+40),this.layBody.GetHeight()>800&&this.laySearch.GetHeight()>this.layBody.GetHeight()&&(this.imgLoginHeader.GetElementHandle().style.setProperty("object-fit","cover"),this.imgLoginHeader.SetHeightStyle(1),this.imgLoginHeader.SetHeight(this.layBody.GetHeight()-this.laySearch.FMargins.FTop-this.laySearch.FMargins.FBottom-80-this.lblTitle.GetHeight()-this.lblTitle.FMargins.FTop-this.lblTitle.FMargins.FBottom-this.lblDescription.GetHeight()-this.lblDescription.FMargins.FTop-this.lblDescription.FMargins.FBottom),this.laySearch.SetHeight(this.lblSearch.GetTop()+this.lblSearch.GetHeight()+40),this.laySearch.SetHeight(this.lblDescription.GetTop()+this.lblDescription.GetHeight()+40))},this.ButtonMouseEnter=function(e){e.SetColor(pas.uColors.MakeColorDarker(14120960))},this.ButtonMouseLeave=function(e){e.SetColor(14120960)},this.WebFrameResize=function(e){!1===this.PageCreated&&this.StylePage(),this.GetWidth()<=1100?(this.edtSearch.FMargins.SetLeft(80),this.edtSearch.FMargins.SetRight(80),this.btnSearch.FMargins.SetLeft(80),this.btnSearch.FMargins.SetRight(80)):(this.edtSearch.FMargins.SetLeft(250),this.edtSearch.FMargins.SetRight(250),this.btnSearch.FMargins.SetLeft(250),this.btnSearch.FMargins.SetRight(250)),this.imgLoginHeaderLoaded(null)},this.StylePage=function(){this.PageCreated=!0,this.imgLoginHeader.GetElementHandle().style.setProperty("border-radius","25px 25px 0px 0px"),this.laySearch.GetElementHandle().style.setProperty("border-radius","25px"),this.laySearch.GetElementHandle().style.setProperty("border-width","2px"),this.laySearch.GetElementHandle().style.setProperty("background-color","rgba(0, 0, 0, .7)"),this.laySearch.GetElementHandle().style.setProperty("backdrop-filter","blur(8px)"),this.edtSearch.GetElementHandle().style.setProperty("border-radius","5px"),this.edtSearch.GetElementHandle().style.setProperty("border-width","0"),this.btnSearch.GetElementHandle().style.setProperty("border-radius","5px"),this.btnSearch.GetElementHandle().style.setProperty("border-width","0")},this.SetContent=function(){this.lblSearch.SetVisible(!1),this.edtSearch.SetVisible(!1),this.btnSearch.SetVisible(!1),this.lblDescription.SetCaption("Track and access guides for all achievements across all Halo games! The Halo Achievement Tracker allows you to filter achievements by individual game, game mode, and the map on which they can be unlocked.")},this.LoadDFMValues=function(){pas["WEBLib.Forms"].TCustomFrame.LoadDFMValues.call(this),this.layBody=pas["WEBLib.ExtCtrls"].TScrollBox.$create("Create$1",[this]),this.laySearch=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.imgLoginHeader=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.lblDescription=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblTitle=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblSearch=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.edtSearch=pas["WEBLib.StdCtrls"].TEdit.$create("Create$1",[this]),this.btnSearch=pas["WEBLib.StdCtrls"].TButton.$create("Create$1",[this]),this.layBody.BeforeLoadDFMValues(),this.laySearch.BeforeLoadDFMValues(),this.imgLoginHeader.BeforeLoadDFMValues(),this.lblDescription.BeforeLoadDFMValues(),this.lblTitle.BeforeLoadDFMValues(),this.lblSearch.BeforeLoadDFMValues(),this.edtSearch.BeforeLoadDFMValues(),this.btnSearch.BeforeLoadDFMValues();try{this.SetName("Frame_Search"),this.SetLeft(0),this.SetTop(0),this.SetWidth(1566),this.SetHeight(936),this.SetTabOrder(0),this.SetEvent(this,"OnResize","WebFrameResize"),this.layBody.SetParentComponent(this),this.layBody.SetName("layBody"),this.layBody.SetLeft(0),this.layBody.SetTop(0),this.layBody.SetWidth(1566),this.layBody.SetHeight(936),this.layBody.SetAlign(5),this.layBody.SetBorderStyle(0),this.layBody.SetChildOrderEx(2),this.layBody.SetColor(16711422),this.laySearch.SetParentComponent(this.layBody),this.laySearch.SetName("laySearch"),this.laySearch.SetAlignWithMargins(!0),this.laySearch.SetLeft(20),this.laySearch.SetTop(20),this.laySearch.SetWidth(1526),this.laySearch.SetHeight(466),this.laySearch.FMargins.SetLeft(20),this.laySearch.FMargins.SetTop(20),this.laySearch.FMargins.SetRight(20),this.laySearch.FMargins.SetBottom(20),this.laySearch.SetAlign(1),this.laySearch.SetBorderColor(16777215),this.laySearch.SetChildOrderEx(1),this.laySearch.SetColor(0),this.imgLoginHeader.SetParentComponent(this.laySearch),this.imgLoginHeader.SetName("imgLoginHeader"),this.imgLoginHeader.SetLeft(0),this.imgLoginHeader.SetTop(0),this.imgLoginHeader.SetWidth(1526),this.imgLoginHeader.SetHeight(57),this.imgLoginHeader.SetHeightStyle(2),this.imgLoginHeader.SetHeightPercent(100),this.imgLoginHeader.SetWidthPercent(100),this.imgLoginHeader.SetAlign(1),this.SetEvent$1(this.imgLoginHeader,this,"OnLoaded","imgLoginHeaderLoaded"),this.imgLoginHeader.SetURL("assets/background-infinite.jpg"),this.lblDescription.SetParentComponent(this.laySearch),this.lblDescription.SetName("lblDescription"),this.lblDescription.SetAlignWithMargins(!0),this.lblDescription.SetLeft(40),this.lblDescription.SetTop(154),this.lblDescription.SetWidth(1446),this.lblDescription.SetHeight(90),this.lblDescription.FMargins.SetLeft(40),this.lblDescription.FMargins.SetTop(20),this.lblDescription.FMargins.SetRight(40),this.lblDescription.FMargins.SetBottom(0),this.lblDescription.SetAlign(1),this.lblDescription.SetAlignment(2),this.lblDescription.SetCaption("Track and access guides for all 700 achievements in Halo: The Master Chief Collection! The Halo Achievement Tracker allows you to filter achievements by individual game, game mode, and the map on which they can be unlocked. Simply click on any achievement to instantly open up a guide."),this.lblDescription.FFont.FCharset=1,this.lblDescription.FFont.SetColor(16777215),this.lblDescription.FFont.SetHeight(-21),this.lblDescription.FFont.SetName("Segoe UI"),this.lblDescription.FFont.SetStyle({}),this.lblDescription.SetHeightStyle(2),this.lblDescription.SetHeightPercent(100),this.lblDescription.SetParentFont(!1),this.lblDescription.FWordWrap=!0,this.lblDescription.SetWidthPercent(100),this.lblTitle.SetParentComponent(this.laySearch),this.lblTitle.SetName("lblTitle"),this.lblTitle.SetAlignWithMargins(!0),this.lblTitle.SetLeft(40),this.lblTitle.SetTop(77),this.lblTitle.SetWidth(1446),this.lblTitle.SetHeight(57),this.lblTitle.FMargins.SetLeft(40),this.lblTitle.FMargins.SetTop(20),this.lblTitle.FMargins.SetRight(40),this.lblTitle.FMargins.SetBottom(0),this.lblTitle.SetAlign(1),this.lblTitle.SetAlignment(2),this.lblTitle.SetCaption("Halo Achievement Tracker"),this.lblTitle.FFont.FCharset=1,this.lblTitle.FFont.SetColor(16777215),this.lblTitle.FFont.SetHeight(-42),this.lblTitle.FFont.SetName("Segoe UI"),this.lblTitle.FFont.SetStyle({}),this.lblTitle.SetHeightStyle(2),this.lblTitle.SetHeightPercent(100),this.lblTitle.SetParentFont(!1),this.lblTitle.FWordWrap=!0,this.lblTitle.SetWidthPercent(100),this.lblSearch.SetParentComponent(this.laySearch),this.lblSearch.SetName("lblSearch"),this.lblSearch.SetAlignWithMargins(!0),this.lblSearch.SetLeft(40),this.lblSearch.SetTop(416),this.lblSearch.SetWidth(1446),this.lblSearch.SetHeight(50),this.lblSearch.FMargins.SetLeft(40),this.lblSearch.FMargins.SetTop(20),this.lblSearch.FMargins.SetRight(40),this.lblSearch.FMargins.SetBottom(0),this.lblSearch.SetAlign(1),this.lblSearch.SetAlignment(2),this.lblSearch.SetCaption("Enter your Xbox LIVE Gamertag to pull your current achievement progress for Halo: The Master Chief Collection"),this.lblSearch.FFont.FCharset=1,this.lblSearch.FFont.SetColor(16777215),this.lblSearch.FFont.SetHeight(-19),this.lblSearch.FFont.SetName("Segoe UI"),this.lblSearch.FFont.SetStyle({}),this.lblSearch.SetHeightStyle(2),this.lblSearch.SetHeightPercent(100),this.lblSearch.SetParentFont(!1),this.lblSearch.FWordWrap=!0,this.lblSearch.SetWidthPercent(100),this.edtSearch.SetParentComponent(this.laySearch),this.edtSearch.SetName("edtSearch"),this.edtSearch.SetAlignWithMargins(!0),this.edtSearch.SetLeft(250),this.edtSearch.SetTop(284),this.edtSearch.SetWidth(1026),this.edtSearch.SetHeight(46),this.edtSearch.FMargins.SetLeft(250),this.edtSearch.FMargins.SetTop(40),this.edtSearch.FMargins.SetRight(250),this.edtSearch.FMargins.SetBottom(0),this.edtSearch.SetAlign(1),this.edtSearch.SetChildOrderEx(3),this.edtSearch.FFont.FCharset=1,this.edtSearch.FFont.SetColor(65793),this.edtSearch.FFont.SetHeight(-21),this.edtSearch.FFont.SetName("Segoe UI"),this.edtSearch.FFont.SetStyle({}),this.edtSearch.SetHeightPercent(100),this.edtSearch.SetParentFont(!1),this.edtSearch.SetTextHint("Enter Xbox LIVE Gamertag"),this.edtSearch.SetWidthPercent(100),this.btnSearch.SetParentComponent(this.laySearch),this.btnSearch.SetName("btnSearch"),this.btnSearch.SetAlignWithMargins(!0),this.btnSearch.SetLeft(250),this.btnSearch.SetTop(350),this.btnSearch.SetWidth(1026),this.btnSearch.SetHeight(46),this.btnSearch.SetControlCursor(21),this.btnSearch.FMargins.SetLeft(250),this.btnSearch.FMargins.SetTop(20),this.btnSearch.FMargins.SetRight(250),this.btnSearch.FMargins.SetBottom(0),this.btnSearch.SetAlign(1),this.btnSearch.SetCaption("Search"),this.btnSearch.SetColor(14120960),this.btnSearch.SetChildOrderEx(4),this.btnSearch.FFont.FCharset=1,this.btnSearch.FFont.SetColor(16777215),this.btnSearch.FFont.SetHeight(-21),this.btnSearch.FFont.SetName("Segoe UI"),this.btnSearch.FFont.SetStyle({}),this.btnSearch.SetHeightPercent(100),this.btnSearch.SetParentFont(!1),this.btnSearch.SetWidthPercent(100),this.SetEvent$1(this.btnSearch,this,"OnMouseEnter","ButtonMouseEnter"),this.SetEvent$1(this.btnSearch,this,"OnMouseLeave","ButtonMouseLeave")}finally{this.layBody.AfterLoadDFMValues(),this.laySearch.AfterLoadDFMValues(),this.imgLoginHeader.AfterLoadDFMValues(),this.lblDescription.AfterLoadDFMValues(),this.lblTitle.AfterLoadDFMValues(),this.lblSearch.AfterLoadDFMValues(),this.edtSearch.AfterLoadDFMValues(),this.btnSearch.AfterLoadDFMValues()}};var e=this.$rtti;e.addField("layBody",pas["WEBLib.ExtCtrls"].$rtti.TScrollBox),e.addField("laySearch",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("imgLoginHeader",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("lblDescription",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblTitle",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblSearch",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("edtSearch",pas["WEBLib.StdCtrls"].$rtti.TEdit),e.addField("btnSearch",pas["WEBLib.StdCtrls"].$rtti.TButton),e.addMethod("imgLoginHeaderLoaded",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("ButtonMouseEnter",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("ButtonMouseLeave",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("WebFrameResize",0,[["Sender",pas.System.$rtti.TObject]])}))})),rtl.module("Data_Achievements",["System"],(function(){"use strict";var e=this;rtl.recNewT(this,"TAchievement",(function(){this.name="",this.description="",this.image="",this.percent_achieved="",this.Guide_Description="",this.$new=function(){var e=Object.create(this);return e.Guide_Video=[],e.Filter=[],e},this.$eq=function(e){return this.name===e.name&&this.description===e.description&&this.image===e.image&&this.percent_achieved===e.percent_achieved&&this.Guide_Description===e.Guide_Description&&this.Guide_Video===e.Guide_Video&&this.Filter===e.Filter},this.$assign=function(e){return this.name=e.name,this.description=e.description,this.image=e.image,this.percent_achieved=e.percent_achieved,this.Guide_Description=e.Guide_Description,this.Guide_Video=rtl.arrayRef(e.Guide_Video),this.Filter=rtl.arrayRef(e.Filter),this}})),this.HaloMCC_Achievements$a$clone=function(t){var i=[];i.length=700;for(var a=0;a<700;a++)i[a]=e.TAchievement.$clone(t[a]);return i},this.HaloMCC_Achievements=[this.TAchievement.$clone({name:"Your Journey Begins",description:"Complete a campaign mission or a match of multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6fb6ed832c24c8e0594c13cb8a7b08ac28b8d603.jpg",percent_achieved:"90.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign","Co-op Campaign","Multiplayer"]}),this.TAchievement.$clone({name:"Just Getting Started",description:"Kill 100 enemies or players.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/295994d6837f319474877fac6036b13bcc09e7cc.jpg",percent_achieved:"80.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign","Co-op Campaign","Multiplayer"]}),this.TAchievement.$clone({name:"I'm Sorry, Dave",description:"Halo: Reach: Find the hidden binary signature.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fe21255dc623761447e3caf84522b1fb95212ca0.jpg",percent_achieved:"75.8%",Gamerscore:-1,Guide_Description:'To unlock the "I’m Sorry, Dave" achievement in Halo: Reach within the Halo: The Master Chief Collection (MCC), you need to locate a specific easter egg that pays homage to David Candland, the game’s UI director. Here’s a detailed guide on how to find it:\r\n\r\n1. Start any campaign mission or multiplayer map in Halo: Reach.\r\n2. Pick up a weapon that **does not** have a zooming scope feature. Common examples include the Assault Rifle or the Plasma Pistol.\r\n3. Press the zoom button (usually the right stick on consoles or the designated key on PC) to ’zoom in’ with your unscoped weapon.\r\n4. Look closely at the **bottom left corner** of your screen. You will notice a string of binary code appearing briefly.\r\n5. This binary code translates to the word "Dave" in ASCII binary representation.\r\n\r\nBy following these steps and observing the binary code, you will unlock the "I’m Sorry, Dave" achievement.',Guide_Video:["https://www.youtube.com/embed/ROoEebxqwJM?si=hdYc8YVHFQ-OTlsN"],Filter:["Other"]}),this.TAchievement.$clone({name:"Balaho's Most Wanted",description:"Kill 100 Grunts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/69f15b3ba103e1ffd9febaecf5f3aa6e5cbda9f6.jpg",percent_achieved:"71.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Where Am I?",description:"Complete 10 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/883e801b34c009efc89372588f3a8b55b9d149bc.jpg",percent_achieved:"62.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The One Percent",description:"Kill 100 Elites.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8462cdf780c272b9ebbae5c31ab859eb3c684841.jpg",percent_achieved:"56.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"We're Just Getting Started",description:"Halo: Reach: Complete Winter Contingency.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/220809a19b1fc7605ab7a24c88535e2882ded420.jpg",percent_achieved:"56.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Spoilsport",description:"Kill 100 Jackals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/de9f255b9dd5ea58551c52d95195407f60f49051.jpg",percent_achieved:"54.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Just A Taste",description:"Collect 500 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8286861410532449f5acb4ad2659565b4ebb18de.jpg",percent_achieved:"50.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Protocol Dictates Action",description:"Halo: Reach: Complete ONI: Sword Base.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4db3b9feb3351449a0d318e846bfbc70f24f6041.jpg",percent_achieved:"49.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Stick With It...A Little Longer",description:"Play a multiplayer or co-op game at least 3 months after your first game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7c8b1632e37e7da26f986dcc5c91e0609c416eed.jpg",percent_achieved:"48.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign","Multiplayer"]}),this.TAchievement.$clone({name:"Pillar of Autumn",description:"Halo CE: Complete The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c4044114ec5ace082384406777e90e1e73f78a7b.jpg",percent_achieved:"47.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Guardians Are Coming",description:"Get killed by the Guardians.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/be40be591cab35d4ff92e1953a0e679a671934ff.jpg",percent_achieved:"47.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"My Buddy Chips",description:"Halo CE: Fight alongside Chips Dubbo and listen to his words of wisdom.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a854ff330ea8625c2233b0283e94c90c9b2281df.jpg",percent_achieved:"46.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Need A Weapon",description:"Halo: Reach: Complete Nightfall.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/07ae2a02a67b137ca72c865e37e0d18ad080a560.jpg",percent_achieved:"44.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bite The Hand",description:"Kill a 343 developer in matchmaking or someone who has this achievement.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/df75e2dbc9cbd91b41cd52a551a306e27cca56c6.jpg",percent_achieved:"43.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mind the Skill Gap",description:"Halo: Reach: Observe the logo of a buttoned-up mining company.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/24f44814b8b0e30fd8f6ad0ac5406440f7eb17bd.jpg",percent_achieved:"41.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All Out of Bubblegum",description:"Collect 1,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7e6141839db0901e21951f0a5c7ca4a1934bfb92.jpg",percent_achieved:"40.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"To War",description:"Halo: Reach: Complete Tip of the Spear.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a3faee077d2a6a5225b7c24d1624fa110dfa0477.jpg",percent_achieved:"40.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Halo",description:"Halo CE: Complete Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/39e524b73b0aa4f3636de289ce6462ce3844b51d.jpg",percent_achieved:"40.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Standard Operating Brocedure",description:"Complete any co-op level on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e0ea3c0b63e780563e07c3d4ee8d1cffc157da0f.jpg",percent_achieved:"40.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Going Bananas",description:"Kill 100 Brutes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6fb647f3b03049b154ff5a4b16ac90993546fd3a.jpg",percent_achieved:"39.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You Flew Pretty Good",description:"Halo: Reach: Complete Long Night of Solace.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/992fe505f231c2c8da47082ee3a5c9b45edaab17.jpg",percent_achieved:"37.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Truth and Reconciliation",description:"Halo CE: Complete The Truth and Reconciliation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/998dede96b5044cf5f9dfe5817bd6832b4a27cb6.jpg",percent_achieved:"37.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Delicious Brains",description:"Kill 100 Flood.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1b9f2ff139462ddefc7451cd03c826edd92c6957.jpg",percent_achieved:"36.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Into The Howling Dark",description:"Halo: Reach: Complete Exodus.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d086c772ec43b8451d16e6ba8526bb1842f76ddb.jpg",percent_achieved:"35.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gruntageddon",description:"Kill 1000 Grunts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ab0f2b88a485165c2e2f95de70ed79c4cb3a370c.jpg",percent_achieved:"34.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Front Page News",description:"Halo: Reach: Find me in the club.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a5b5e8e93e60a2697b3d2abf47b2d69104ffa550.jpg",percent_achieved:"34.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dust And Echoes",description:"Halo: Reach: Complete New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0482067894281e884f5fdd2aab325b5457f3b8f6.jpg",percent_achieved:"34.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Silent Cartographer",description:"Halo CE: Complete The Silent Cartographer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/82c4edff8aa0cb8cb45ce9c8bc2e83c824a00c1a.jpg",percent_achieved:"34.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"What About Bob?",description:"Halo: Reach: Find and eliminate one of the hidden Ranger Commander Elites.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/73c710a6a97ef19943a3b9be562a266734a9f48a.jpg",percent_achieved:"33.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Easy to Overlook",description:"Halo: Reach: Access hidden UNSC radio chatter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/70063257217079ad65d2bda2c5740f0af7cd3921.jpg",percent_achieved:"33.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Your Heresy Will Stay Your Feet",description:"Halo: Reach: Kill the Elite Zealot before he can escape during Tip of the Spear.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4ad9f4f7c7b954c30fd27cf4fb57fd7940aa92ec.jpg",percent_achieved:"33.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"THE Chips Dubbo?",description:"Halo 2: Fight alongside the legendary Chips Dubbo and listen to his words.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/840bc9e31289f6781e295da86295187132bc84fc.jpg",percent_achieved:"32.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Game On",description:"Complete 50 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f31d551baf7907723f3000a829e262e82b400632.jpg",percent_achieved:"32.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Can't Keep Him Down",description:"Halo 3: Fight alongside and listen to The Man. The Legend. Chips Dubbo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/85991e183acedbeaa9390d12726d7028a472124f.jpg",percent_achieved:"32.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"This Is Not Your Grave",description:"Halo: Reach: Complete The Package.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/398f002e8352cf8b89bd1b4f06805e6e7d303e17.jpg",percent_achieved:"32.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Brovershield",description:"Complete any co-op level on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/975df6749bff0af27b1d09efe4eeb6c2ba23b161.jpg",percent_achieved:"31.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Send Me Out... With A Bang",description:"Halo: Reach: Complete The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1144d8b742ed0d08749d7bf59f74a859c8015d87.jpg",percent_achieved:"31.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cairo Station",description:"Halo 2: Complete Cairo Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4d43703227a531cd099f8172f00dd0bda69c3b38.jpg",percent_achieved:"30.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Assault on the Control Room",description:"Halo CE: Complete Assault on the Control Room.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b9ed825bee163d4f7efc259c18a69dd6c03b5e92.jpg",percent_achieved:"30.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Pile of Medals",description:"Collect 2,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7bb7c58b0af15ad15799a815e85fe4487981de85.jpg",percent_achieved:"29.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Outskirts",description:"Halo 2: Complete Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/00912b1de1d4683354a218ecd12172d34b9be0ef.jpg",percent_achieved:"28.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dirty Bird",description:"Halo 2: Fly the Heretic Banshee.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/560173fffd082ef376d1b3957ac941a7167512d4.jpg",percent_achieved:"28.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Landfall",description:"Halo 3: Complete Sierra 117.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/781088be5e22a4c331528830802d8b21412d2ce4.jpg",percent_achieved:"28.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Didn't Train To Be A Pilot",description:"Halo: Reach: Kill 3 of the anti-aircraft batteries during New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/58708a29de0af2c5a4944c576fe159312b508443.jpg",percent_achieved:"28.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"343 Guilty Spark",description:"Halo CE: Complete 343 Guilty Spark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3985cf811b27aed7fbc1717533421a68a6103281.jpg",percent_achieved:"27.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Welcome to Reach",description:"Halo: Reach: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6654108c2da067f0e4d2e14e843e702c100b9fa2.jpg",percent_achieved:"27.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Metropolis",description:"Halo 2: Complete Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9d1862db90416939182d3ec13c05eb9fb18a3052.jpg",percent_achieved:"27.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Library",description:"Halo CE: Complete The Library.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c8d5b607fb1302b200d9b8cc52be50f0dbf112f0.jpg",percent_achieved:"26.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Holdout",description:"Halo 3: Complete Crow's Nest.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e4b7bb58f4f13c9572f94c921a777b4327f55723.jpg",percent_achieved:"26.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Foe Hammer",description:"Kill 5,000 enemies or players.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6babc20aba9572047c35b739bdbe7c92cb51c188.jpg",percent_achieved:"26.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Arbiter",description:"Halo 2: Complete The Arbiter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c9fc0a1b6f1f0257e2d7d907a8f6ee6d09202ce0.jpg",percent_achieved:"26.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sacrifice",description:"Halo CE: Activate Terminal 2 on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4248f566c77bd3b0711df0d655ae7f403d36078c.jpg",percent_achieved:"25.5%",Gamerscore:-1,Guide_Description:"As you progress through the level, you’ll reach a point where Cortana remarks, “This cave is not a natural formation.” You will be driving your Warthog through a network of tunnels. Pay close attention as you navigate this area. You’re looking for a small side path that diverges from the main route.\r\n\r\nThis path is somewhat concealed, so it’s easy to miss if you’re speeding through. Slow down and keep an eye out for a narrow opening on the right side of the cave. It’s located just after a large, illuminated structure that stands out in the environment. Once you spot the alley, drive into it and dismount from your Warthog.\r\n\r\nThe terminal is tucked away here, waiting to be activated. Approach it and interact to unlock the achievement.",Guide_Video:["https://www.youtube.com/embed/QGV5LD__nqI?si=lP_br6GggHIJl3s8&start=27"],Filter:["Other"]}),this.TAchievement.$clone({name:"The Road",description:"Halo 3: Complete Tsavo Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7adb4a054685e90a774aeea8bea44ab23ee8c88e.jpg",percent_achieved:"24.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Soldier We Need You To Be",description:"Halo: Reach: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d6d1cf1ea9a352f28ac85158632b16f2bdde462c.jpg",percent_achieved:"24.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Two Betrayals",description:"Halo CE: Complete Two Betrayals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4f8c8a3af9da42bfbf3b3d5bcc6b8aee6e621bcb.jpg",percent_achieved:"24.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Keyes",description:"Halo CE: Complete Keyes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a077e8ba6bffc8dd6964915b628bb1ac4e06068e.jpg",percent_achieved:"24.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Oracle",description:"Halo 2: Complete The Oracle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5b4b16735f8db1a0170caf3e0e9114b5e0d200a4.jpg",percent_achieved:"23.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Crate of Medals",description:"Collect 3,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dd16a4bc52979419075d7b04770ac5a4bc1cd6b2.jpg",percent_achieved:"23.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Assault",description:"Halo 3: Complete The Storm.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a7da57029e559813204f4e0408cb474905eae0ba.jpg",percent_achieved:"23.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Maw",description:"Halo CE: Complete The Maw.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fde1b57b2fedc1cae80a881c171a57a5c2f547bc.jpg",percent_achieved:"23.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Delta Halo",description:"Halo 2: Complete Delta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2d7af833759198c97e822483f0272c8e6c44eccf.jpg",percent_achieved:"23.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tempered Blade",description:"Win 10 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/58a1641538d0e04011e4a2879b53ba14504311c9.jpg",percent_achieved:"23.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cleansing",description:"Halo 3: Complete Floodgate.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4e4d798eebdb30bedad3163cdb99474d00cd5078.jpg",percent_achieved:"23.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dawn",description:"Halo 4: Complete Dawn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/88b7b73be25252076034d0815d2613a6c98425df.jpg",percent_achieved:"23.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Splinters",description:"Halo CE: Activate Terminal 3 on The Truth and Reconciliation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/12941e165c5bd69ac7b97fc6f6811085da76b87b.jpg",percent_achieved:"22.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Go Ape Shiv",description:"Halo 2: Kill an enraged, berserk Brute using melee.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6eaa9ccd0b071ce36524c764c7bfeefdaf90cce7.jpg",percent_achieved:"22.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"New Ways to Save a Buck",description:"Halo: Reach: Hear a familiar voice on New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0a0cd428487fff242ccbb9651bc067af38e449bc.jpg",percent_achieved:"22.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Confused Callouts",description:"Halo: Reach: Trigger a humorous callout on your HUD's position indicator.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/13b33f7c7076f6309ecf45af187f68c2ca674ca0.jpg",percent_achieved:"22.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Regret",description:"Halo 2: Complete Regret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ddfa1f30150801c3fb7bae5abbc1bffbef5094ee.jpg",percent_achieved:"22.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Humble Beginnings of Wiljax Brantley",description:"Halo: Reach: Now that's a value meal.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1edb3c59619a53d64c4acd64cec7bafbd6d9f861.jpg",percent_achieved:"22.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Refuge",description:"Halo 3: Complete The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c26514222eeada81fb2daf0a3352c2d105e889c3.jpg",percent_achieved:"22.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Zombie Repeller",description:"Kill 1000 Flood.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8c8e44f295ac52fc534f0883cdedc0c8d4ae1911.jpg",percent_achieved:"21.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hunters Hunted",description:"Kill 50 Hunters.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3aed1bfe9622080de11937532626835ec73b8826.jpg",percent_achieved:"21.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bro Hammer",description:"Complete any co-op level on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/def94a8668f59a36650fe56f5046c112c855b575.jpg",percent_achieved:"21.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Sacred Icon",description:"Halo 2: Complete Sacred Icon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0ade7ea180026cb946207362b751043e1818618a.jpg",percent_achieved:"21.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Greenhorn",description:"Halo CE: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/13977bde7c935eeed894008f9c3bc25cb35467fa.jpg",percent_achieved:"21.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Junior Detective",description:"H3: ODST: Find the 1st clue to unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9a232c984a85a0629fe26c98b78d63fd63df3147.jpg",percent_achieved:"21.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Two Places, Same Time",description:"H3: ODST: I've got my eye on you, Marine.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e89aa96350b417452056a99e8ebf168af68515b8.jpg",percent_achieved:"21.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Last Stand",description:"Halo 3: Complete The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4757bac2c35fcadee285d567989f664425fb4746.jpg",percent_achieved:"20.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Return",description:"Halo 3: Complete Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f1fa005a6b9d12a8d65e30d8b94260a4dfcc1c84.jpg",percent_achieved:"20.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Quarantine Zone",description:"Halo 2: Complete Quarantine Zone.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/39182962a6bfb51c42210d2ec1022e449bcaffa5.jpg",percent_achieved:"20.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Key",description:"Halo 3: Complete Cortana.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/aacef456183baaf458e36a2588a5fe59938c3be4.jpg",percent_achieved:"20.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ripple Fire",description:"Halo 2: Beat the par score on Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/610a008422360a4720958e511bf7408e6c1b35e8.jpg",percent_achieved:"20.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gravemind",description:"Halo 2: Complete Gravemind.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/89941ca18223ed522c7a081d26d9d032106bd2ad.jpg",percent_achieved:"20.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Requiem",description:"Halo 4: Complete Requiem.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/172b33d8b4badc7b5ab488be3fe4cc072452f981.jpg",percent_achieved:"19.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Got This",description:"Complete 100 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3d7ef93c5c7ab001b202cb591ec730da47fd5cfd.jpg",percent_achieved:"19.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tayari Plaza",description:"H3: ODST: Complete Tayari Plaza.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cb15fd729054fa88128e9b3db7ab5f351730f9f5.jpg",percent_achieved:"19.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"A Heap of Medals",description:"Collect 4,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/48052b4fe40c5123a908565a6363e1df84216870.jpg",percent_achieved:"19.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"High Charity",description:"Halo 2: Complete High Charity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b142e6d1154ec2ec715072dcfb705225f6f6c3f5.jpg",percent_achieved:"19.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Uprising",description:"Halo 2: Complete Uprising.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b82988af7deb163f33a0acc6e6ace013e16ad75c.jpg",percent_achieved:"19.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Great Journey",description:"Halo 2: Complete The Great Journey.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2e7f3c5063880700e514847bb00b0d2ab66bc860.jpg",percent_achieved:"19.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Birth of a Spartan",description:"Halo CE: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cb969fff8ecb7233cf1a4fe138f01cad0e340ff2.jpg",percent_achieved:"18.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Investigator",description:"H3: ODST: Find the 2nd clue to unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/760bc61fc2e935837e3000aff9d0112a709809e1.jpg",percent_achieved:"18.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Listener",description:"H3: ODST: Find the 1st Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/57b6e9a1b2fcd5dea362e68feb23952a0409df51.jpg",percent_achieved:"18.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Remember Reach",description:"Halo: Reach: Play a game of Halo: Reach on the 14th of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/57dda27f65c06768f50c88529d1939116737397e.jpg",percent_achieved:"17.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Six Pedals, Four Directions",description:"Halo 2: Drive a Scorpion while playing as the Arbiter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6924daa1c6e6ea7ba9c6b2879f7275155b06b50c.jpg",percent_achieved:"17.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Uplift Reserve",description:"H3: ODST: Complete Uplift Reserve.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/276189d27a2af69a6cd9092f03b2e1de40f5e5ec.jpg",percent_achieved:"17.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Forerunner",description:"Halo 4: Complete Forerunner.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a9c1bd20afca6c69d8ebeccd0f63e93471238dd4.jpg",percent_achieved:"17.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Training Wheels",description:"Halo 3: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/823b61b960ecd6b94727248439057097d54590f0.jpg",percent_achieved:"17.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pest Control",description:"Kill 100 Crawlers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f784ffac167abf1641da8152e2b02ddc4ce831c3.jpg",percent_achieved:"17.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bip! Bap! BAM!",description:"H3: ODST: Earn a Triple Kill medal with the pistol on any level.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c39d77574b35c4e0ca4708c3ecb3e510fc3c8acc.jpg",percent_achieved:"17.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Scavenger Hunt",description:"Kill 1000 Jackals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5b91a5204e92812e13ceb05b177400aec1ba7876.jpg",percent_achieved:"17.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Idle Hands",description:"Halo CE: Activate Terminal 4 on The Silent Cartographer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/71215428808f9cfc0da04d524f98244a59dbd057.jpg",percent_achieved:"17.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Didn't Like This Ship Anyways",description:"Halo CE: Beat the par time on The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8b117622d1b14cffc8a3c710d3b2cbbbc925b528.jpg",percent_achieved:"16.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Were It So Easy",description:"Kill 1000 Elites.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3f609715ab662189c8b45905364f8f408c1e0aff.jpg",percent_achieved:"16.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Infinity",description:"Halo 4: Complete Infinity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cc3fd5574b20ee5d4d5c15d07a06bb34eb660cda.jpg",percent_achieved:"16.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"An Ear Full",description:"H3: ODST: Find the 2nd Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/45a4551a240509a310354d0fae24b67a532ee9d2.jpg",percent_achieved:"16.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Big Green Style",description:"Halo 2: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0fd5a5597acb96ddb1f63030d837d66c99fb0ee8.jpg",percent_achieved:"16.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Kizingo Boulevard",description:"H3: ODST: Complete Kizingo Blvd.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a794f5ac787d522ad20fa13ab8bac4c0fbd785a0.jpg",percent_achieved:"16.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Gumshoe",description:"H3: ODST: Find the 3rd clue unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1dcb981475ae1f5f8e070a9a134428b1b3ee013e.jpg",percent_achieved:"16.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Moon's Out, Goons Out",description:"Halo: Reach: Beat the par score on Nightfall.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fa6da22dd46e74a1a95a3767cdd7d81d70c66d1d.jpg",percent_achieved:"16.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Few Trinkets",description:"Collect 5,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/453486c6e47d5f789f3143586548702b872fdceb.jpg",percent_achieved:"16.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Prophet's Bane",description:"Halo 3: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6f5e056ae6a1652e3c568554ff1cf96990c2ba51.jpg",percent_achieved:"15.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"ONI Alpha Site",description:"H3: ODST: Complete ONI Alpha Site.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/71c448592f23c5847442f6f81752880d23cff232.jpg",percent_achieved:"15.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"T'vaoan Terminator",description:"Halo: Reach: Kill 100 Skirmishers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/64ca5eb1cd6fda62428dd81b4b29255678376063.jpg",percent_achieved:"15.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Close Quarters Combat",description:"Halo CE: Complete The Truth and Reconciliation with at least four rounds left in your Sniper Rifle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/555c5fed3ab33681807f3b55c5335b34b47dfa73.jpg",percent_achieved:"15.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Deference of Darkness",description:"H3: ODST: Complete any level without activating VISR mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0e79d536870fc9fd720d04996e338af4193afe3e.jpg",percent_achieved:"15.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Reclaimer",description:"Halo 4: Complete Reclaimer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d33024669731392ebb1897659650821966f01d52.jpg",percent_achieved:"15.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bloodhound",description:"H3: ODST: Find the 4th clue unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9c888fa9d7e697d70ba1a2988c45591f3fa4748c.jpg",percent_achieved:"15.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"NMPD HQ",description:"H3: ODST: Complete NMPD HQ.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dad8ee48ebe520944a726c57a1d858a712a42d42.jpg",percent_achieved:"15.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Tuned In",description:"H3: ODST: Find the 3rd Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2b4167b209e0624bac39dac9ac4bd79272004ab1.jpg",percent_achieved:"14.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Shutdown",description:"Halo 4: Complete Shutdown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/aa76f79193f046bb45921a89b434d7ad8bdd67b8.jpg",percent_achieved:"14.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Private Eye",description:"H3: ODST: Find the 5th clue unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/58a5066495ac1dfb3e1f1b1a92b74a96fd677a66.jpg",percent_achieved:"14.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Composer",description:"Halo 4: Complete Composer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/090b45aa5c5f533ecd5f6ab06f04842ed527633a.jpg",percent_achieved:"14.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Flaming Ninja Anniversary",description:"Halo 2A MP: Kill an opponent that has the Ninja Redux achievement in Anniversary matchmaking.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/970b83a1fb35a2b7e56272a65bc5298c6a420c7b.jpg",percent_achieved:"14.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Kikowani Station",description:"H3: ODST: Complete Kikowani Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d0f92ec11481c0512b0d6bc6b42e8e89f4851728.jpg",percent_achieved:"14.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Demon",description:"Halo 2: Complete any campaign level without dying on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bf5e2e2bf17b28e288d787496db4d440eddc7171.jpg",percent_achieved:"14.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Secret Agent",description:"H3: ODST: Find the 6th clue unraveling the mystery.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/531f896cc5c0954bb38e7255086044a43e74e90f.jpg",percent_achieved:"14.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Warrior",description:"Halo 2: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9abe163fbc7e6276b98b7341622ea1eb0dbdf132.jpg",percent_achieved:"14.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Midnight",description:"Halo 4: Complete Midnight.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9932a6f061209baba85ab597a5bad455b9e999cb.jpg",percent_achieved:"14.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Data Hive",description:"H3: ODST: Complete Data Hive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c6a93aa50fdf1f0de9f019a3e78fbe66c5d0e5a6.jpg",percent_achieved:"14.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Can't Put It Down",description:"Complete 150 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8a635a9336b83fe903ddd74ba78cc7cb36ab2b88.jpg",percent_achieved:"14.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Enemies Everywhere!",description:"Halo: Reach: Complete a Firefight set on Normal or Harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1ba07d4a88ecc69eb6f8c4f8252bf8268dac73dd.jpg",percent_achieved:"13.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Coastal Highway",description:"H3: ODST: Complete Coastal Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f9c235fb5c6bb7a19a816ad7aa2b978933682217.jpg",percent_achieved:"13.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"You Are The Weapon",description:"Halo CE: Kill a Hunter with one pistol round.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/28de5824fc614fb0d4801444957bcbee69361144.jpg",percent_achieved:"13.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Do Tell",description:"H3: ODST: Find the 4th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/eead159707abe6c4792dbc2f108916ebedcee857.jpg",percent_achieved:"13.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Enchanted",description:"Halo 2: Activate Terminal 6 on Delta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/153d7fedfe877c8d9f2d27b6ee0fd6eb85eff0f0.jpg",percent_achieved:"13.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fascinated",description:"Halo 2: Activate Terminal 5 on The Oracle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6c239069fe53435642fdd96345ee161933a17b2c.jpg",percent_achieved:"13.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Oh, These Baubles?",description:"Collect 6,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b0b0979d6cf10a8579db3bc8eb7c688d261915a1.jpg",percent_achieved:"13.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Delighted",description:"Halo 2: Activate Terminal 9 on Quarantine Zone.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8cff26060541cf3e74741f8b2bca69151a976863.jpg",percent_achieved:"13.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"World Traveler",description:"Halo 3: Complete a match on at least 8 different multiplayer maps.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/742712639bc280e2c331edace4bcc156c130d015.jpg",percent_achieved:"13.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rookie",description:"H3: ODST: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e586269ca406dcfd31dda182ed90cc6cbd20865e.jpg",percent_achieved:"12.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Jungle Warfare",description:"Halo 4: Beat the par score on Infinity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2c5df76920dc9f2312097f2fd0a66b7f1046b595.jpg",percent_achieved:"12.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Legend Slayer",description:"Halo 2A MP: Kill an opponent that has the Legendary Anniversary achievement.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9fc307082ce534ccff90800627c18ebda84d2d5a.jpg",percent_achieved:"12.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Examiner",description:"Halo 2: Activate Terminal 3 on Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/140dac6887d1680935e7fd40b405afa543654c58.jpg",percent_achieved:"12.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Day To Remember",description:"Halo CE: Play Halo: CE on the 15th of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7ab1ce2bfad3cd88ba2fcb53a4ae42a2b72033d3.jpg",percent_achieved:"12.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Librarian's Gift",description:"Halo 4: Complete every level of the game on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f5e21eb910a8683c1c28f867eeb416380b3751f7.jpg",percent_achieved:"12.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wake Up Buttercup",description:"Halo: Reach: Destroy the Corvette's engines & escort in under 3 minutes during Long Night of Solace",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7e178b008f565bb2e0207aeb4839d75f8f5f012f.jpg",percent_achieved:"12.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Xenophobia",description:"H3: ODST: Complete any level without using Covenant weapons.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6f81647967889c908ec3b78d6d05c6137b6da31c.jpg",percent_achieved:"12.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Folks Need Heroes…",description:"Halo: Reach: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bd51c6bc1518a2b89460bfaf858e5a965e629817.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Warden",description:"Halo 2 MP: In Classic or Anniversary matchmaking, stop the killing spree of another player.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/840c046830a8ba972ac75a391393da1585267792.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"He's Unstoppable",description:"Halo CE: Complete any level on Heroic difficulty or higher without taking health damage.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c9d07dfabadfc57027acde68dbbcce116cd5f54b.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hear Me Out",description:"H3: ODST: Find the 5th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/aec60f756c46029a5655b79307a96cebd6a3f9ea.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Naughty Naughty",description:"Kill 10 Engineers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3bf87b1b2ba02d1c27b0d2120c82a2943992f068.jpg",percent_achieved:"12.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Heresy Will Not Stay My Feet",description:"Halo 2: Beat the par score on The Arbiter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/310aa718bf891e8e4c87165ff723c39c437c2b4e.jpg",percent_achieved:"12.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Boundless",description:"Halo 2: Beat the par score on Delta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/afbf0fd1b27b088a222b2430c17358ded1fdd96c.jpg",percent_achieved:"11.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dankey Kang",description:"Kill 1000 Brutes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b712483db4f951987848c4a39bd9fa30b88d0f6c.jpg",percent_achieved:"11.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dambuster",description:"Halo 3: Beat the par time on Floodgate.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/96b2dd939d6f7a3106575803fd1aabc195102f54.jpg",percent_achieved:"11.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Lord of Admirals",description:"Halo 4: Activate Terminal 2 on Forerunner.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e69781a7b085f5f29109c421aeae4c047c4a6e6e.jpg",percent_achieved:"11.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Decorated Warrior",description:"Halo 2A MP: Get awarded at least 10 different medals in one multiplayer game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1193edc8c66ad1e5eefa279c330e61448661aec3.jpg",percent_achieved:"11.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Urban Warfare Badge",description:"H3: ODST: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ea7ac4b3f58fe35f1cf3d8b54c7242b8123a5382.jpg",percent_achieved:"11.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Third Time's A Charm",description:"Halo 3: Play a game of Halo 3 on the 25th of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/31b9c64ffbb385bae2cbc9b95e1f2344fc496dc6.jpg",percent_achieved:"11.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Still Sharp",description:"Halo: Reach: Beat the par score on ONI: Sword Base.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b2e4dd7c75753643a5bf47882a475c2067f78448.jpg",percent_achieved:"11.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Was Wondering What Would Break First",description:"Kill 100 Knights.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3d55e866abedaf110f48ed9eb8646afa8931de87.jpg",percent_achieved:"11.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Two Corpses In One Grave",description:"Halo: Reach: Kill 2 vehicles at once with the Target Locator during ONI: Sword Base.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3d565a11310a698561364f6cfc4c76a03490607e.jpg",percent_achieved:"11.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bonus Level",description:"Complete 200 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a48ba376262dc5954528a5f20fbffb277993227a.jpg",percent_achieved:"11.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Eavesdropping",description:"H3: ODST: Find the 6th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6bbf18f1d0b4b2aadd6aeaa024427bb984cf5601.jpg",percent_achieved:"10.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Chesty Puller Starter Kit",description:"Collect 7,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6fe6e16af37b22780c6921799d0cf82fbd50a520.jpg",percent_achieved:"10.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wake Up, John",description:"Halo 4: Complete every level of the game on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a9a897b9317c44b3289e025295541254ee54c2dc.jpg",percent_achieved:"10.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Kilotons of Fun",description:"Halo CE: Activate Terminal 10 on The Maw.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4f28bdcaefc9981238126c3e1cc640197c8cad95.jpg",percent_achieved:"10.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Highway Robbery",description:"Halo 3: Beat the par time on Tsavo Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4598ff13f8fadebc3a85bf5e021f5a8d41897d1a.jpg",percent_achieved:"10.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Contender",description:"Win 50 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3f3cdd9bc4357a6bacb69f3633f728ea91c40af5.jpg",percent_achieved:"10.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Nine Lives Are a Myth",description:"Halo: Reach: Beat the par score on New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fa991341bf6612f03111870b062d35da8a84339c.jpg",percent_achieved:"10.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Swift and Shallow",description:"Halo: Reach: Hijack a Banshee during the Reach Campaign.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5d256802f07f6164759cfc85a41b89ca756edd49.jpg",percent_achieved:"10.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scholar",description:"Halo 2: Activate Terminal 11 on Uprising.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b153330a60e388e4143d12cb870c97e5f4cd3e1f.jpg",percent_achieved:"10.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Back At It",description:"Halo 2: Play a game of Halo 2 Anniversary on the 9th of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e7272c2181e74219859c5f8ddb07f02a8df84fb1.jpg",percent_achieved:"10.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Double Down",description:"Halo 2A MP: In Anniversary multiplayer, receive 2 or more Double Kill medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/40e683b6bbb73e7313eb4ec8528cf1319d25f7d1.jpg",percent_achieved:"9.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Inspector",description:"Halo 2: Activate Terminal 4 on The Arbiter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f4c1dd69deb77c1f4e83fc3ad862e12dc46475f1.jpg",percent_achieved:"9.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Precious Cargo",description:"Halo: Reach: Beat the par score on The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/823494fd84f9ad8c69a9c383ab18c5cd6608433e.jpg",percent_achieved:"9.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Before and After",description:"Halo CE: Complete every level of the game having seen it in both classic and remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0098950e43f72873b628825d93287531972e7164.jpg",percent_achieved:"9.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hey, You Dropped This",description:"Halo: Reach: Find Data Pad on 1 Winter Contingency",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2cff2963f077892ef8b59525962d11df2c9d78aa.jpg",percent_achieved:"9.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Auditor",description:"H3: ODST: Find the 7th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8785409485b50e38fb258b2a3168cab4ade1f678.jpg",percent_achieved:"9.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Believe in a Hero",description:"Halo CE: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/abd07de3fde70ef7e20b5141afd62f225d71b666.jpg",percent_achieved:"9.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sabre Metrics",description:"Halo: Reach: Beat the par time on Long Night of Solace.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/26eca5058a899a6475452016a3344825097275a1.jpg",percent_achieved:"9.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Digging up the Past",description:"Halo 4: Access the Master Chief's records on Dawn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f6ee572b711a8ef6c7bdad75c452b8353414e40b.jpg",percent_achieved:"9.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Medal Master Chief",description:"Collect 8,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/215fbb90edce27d1ce9d961ec06fbddbbbbcb01b.jpg",percent_achieved:"9.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Up All Night",description:"Complete 250 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cf8459d3cffb73b33e4b780cd98244e8bf2ccade.jpg",percent_achieved:"9.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Just Browsing",description:"Halo 3: Complete a match on at least 4 different game types in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2f3626afe8386dbd3c0135dbc5bf3e4eeeb26c40.jpg",percent_achieved:"9.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ranger",description:"Halo 3: Beat the par score on The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5653d7760f4e2c2b68ef96218fb4fecb0d42f95d.jpg",percent_achieved:"9.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Son of a Gun",description:"H3: ODST: Beat the par score on Kizingo Blvd.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/eb5b979b38acbc12cb8f73eafe8f7a7cc58d0981.jpg",percent_achieved:"8.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Frequent Flyer Miles",description:"Halo 2: Beat the par score on The Great Journey.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/279d1de25f617577f3dd0743e2a4ef19e43fe22f.jpg",percent_achieved:"8.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Don't Hangar Around",description:"Halo 2: Beat the par time on Cairo Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fbf2342a1dc9bcd79f0b6c85f6cee40c426447c6.jpg",percent_achieved:"8.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pineapple Express",description:"H3: ODST: Kill 4 enemies with a single plasma or frag grenade.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e1528835279e6ba7e89db6515bf1fea037fe75cd.jpg",percent_achieved:"8.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Insomnia",description:"Halo: Reach: Beat the par score on Long Night of Solace.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e7dcaf0a0e36e1ef81e6041286690c3227671d52.jpg",percent_achieved:"8.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Enamored",description:"Halo 2: Activate Terminal 7 on Regret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/472eb536cf5c1536954836b13ea2933bd33078e0.jpg",percent_achieved:"8.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Picnic",description:"Halo: Reach: Observe a grizzly scene on New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/21756595a8b487c2ab2d43de8da8f513a5342374.jpg",percent_achieved:"8.7%",Gamerscore:-1,Guide_Description:'To unlock the "No Picnic" achievement in Halo: Reach within the Halo: The Master Chief Collection (MCC), follow these steps:\r\n\r\n1. Start the Exodus mission.\r\n2. As you begin the mission, sprint down the ramp toward your primary objective.\r\n3. Locate the teddy bear backpack on the ground among the dead bodies at the bottom of the hill near the first door you encounter.\r\n4. Spend a few seconds looking at the teddy bear. This is the “grizzly scene” you need to observe.\r\n5. After examining the teddy bear, the “No Picnic” achievement should pop!\r\n\r\nRemember, it’s not on the level New Alexandria, despite the misleading description. It’s actually in Exodus. So, keep an eye out for that teddy bear backpack! 🐻',Guide_Video:["https://www.youtube.com/embed/SQFzfHO4ZcQ?si=yp9yZHXEjSKcuV7U"],Filter:["Other"]}),this.TAchievement.$clone({name:"Magic Touch",description:"H3: ODST: Beat the par score on Data Hive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9a66f29f31081ea5b0f8d185f13aeb65c44207f3.jpg",percent_achieved:"8.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Feeling Charitable",description:"Halo 2: Beat the par time on High Charity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3a84dbeb1ab0d6b30ed953bdcc86b52d63f8f397.jpg",percent_achieved:"8.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Vanguard",description:"Halo 3: Beat the par score on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7d74bae69df02ed1cf57e9c4f86087ed95deb8e6.jpg",percent_achieved:"8.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Overheard",description:"H3: ODST: Find the 8th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0901c744c10da14f72ed1f7e3c655fcf38832567.jpg",percent_achieved:"8.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Head Banging",description:"Halo 4: Beat the par score on Composer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a772377a504527e1caacc9d2a399e74651c89612.jpg",percent_achieved:"8.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"With Your Shield or On It",description:"Halo 3: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6e35ec26f04f20f0da7d3baeb8eb6a64f32acfef.jpg",percent_achieved:"8.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Game Breaker",description:"Halo: Reach: Kill 10 enemies while using a Jetpack.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d3abee49bcbc643d30f34fd5130aa2da18661943.jpg",percent_achieved:"8.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Inquisitive",description:"Halo 2: Activate Terminal 2 on Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b238aa20a96b797427307033310caa825cb9f2e7.jpg",percent_achieved:"8.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Obsessed",description:"Halo 2: Activate Terminal 13 on The Great Journey.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2881d52d7bcc98db465f92efcb0555d0063d61ee.jpg",percent_achieved:"8.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Guerilla",description:"Halo 3: Beat the par score on Sierra 117.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1b8cb9b87eb63676a3e56fcf7fec59ff9e057e03.jpg",percent_achieved:"8.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Flood",description:"Halo 4: Activate Terminal 4 on Reclaimer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/36f6506191d32fc5022e6780f4cf55e13373cf5d.jpg",percent_achieved:"8.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Run and Gunned",description:"Halo: Reach: Headshot 10 enemies while they are sprinting.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/12489a69c8442364ae8249dc4c8ac4596410576d.jpg",percent_achieved:"8.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Good, The Bad, and The Dead",description:"Collect 9,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e33a11435f2be07894f8e2d3e677fdbbbc925ecc.jpg",percent_achieved:"7.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Counter-Sniped",description:"Halo 2A MP: With a Sniper Rifle or Beam Rifle kill an enemy that was zoomed in.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9e6b5b2bb7f0928f6005cdc5bfc073d4da0deddc.jpg",percent_achieved:"7.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Operation Completion",description:"Halo 4: Complete a Spartan Ops mission.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1795f2df2786229d9cb9d10069f1c1f1aa6b70bc.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Can't Get Enough",description:"Complete 300 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d1c4437b3582a04587df3bf3cfa814c426231d4e.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Blind",description:"Halo 3: Find and claim the Blind Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8a78e36f9f8ce7f6733a6fd9abbb76193576187c.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ice In Your Veins",description:"Halo: Reach: Beat the par score on Winter Contingency.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d5b6077bca2012671ddb8c946bc05eeb8b8c2b67.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Silent but Deadly",description:"Halo 2: Kill 7 opponents from behind in a row without being spotted.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8a83792a491e6a7ef955737a8697127027f94fdf.jpg",percent_achieved:"7.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tighten Up The Graphics",description:"Halo 2: Complete every level of Halo 2 having seen it in both classic and remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2dee617700d61f7ec862e80cd69a878d612a3b24.jpg",percent_achieved:"7.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Beachhead",description:"Halo CE: Storm The Silent Cartographer beach with no Marine casualties on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/28e4baedc9879269ce3068d97bdd4a023c3f0642.jpg",percent_achieved:"7.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Long Time Ago",description:"Halo 4: Play a game of Halo 4 on the 6th of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/772839d3b3fce088743f12c18a37b327eb3e5ced.jpg",percent_achieved:"7.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Charum Hakkor",description:"Halo 4: Activate Terminal 3 on Infinity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c3305a17b88534e51bc127f0002acc576ed205db.jpg",percent_achieved:"7.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Overtaken By Events",description:"H3: ODST: Beat the par time on Data Hive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/25cd83ebf0dc3590157a16d5c5375b2aa3c7a83b.jpg",percent_achieved:"7.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Cavalier",description:"Halo 3: Beat the par score on Tsavo Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/edc574a937e23335fc610ba33242ced85f2f2c19.jpg",percent_achieved:"7.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Black Eye",description:"Halo 3: Find and claim the Black Eye Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/50471e9a5ca8db59e7575b1479b7085d93915ea0.jpg",percent_achieved:"7.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Herald of the Reclamation",description:"Complete all campaigns on Easy difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/284822229c00cd44784426e10ddd58e9f53ad98d.jpg",percent_achieved:"7.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wiretapping",description:"H3: ODST: Find the 9th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2b3fc4f85dca9d33c2304fb1401c3e982bf866de.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Mind Games",description:"Halo CE: Activate Terminal 9 on Keyes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/307a798cf32cd11ce5d1537f35c47509e32fd14f.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hitchhikers May Be Escaping Convicts",description:"Halo CE: Activate Terminal 5 on Assault on the Control Room.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ccbf1fdd9fc35e6c374f602fe2cca66c53956183.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Requiescat in Pace",description:"Halo: Reach: Complete 10 assassinations on enemy players.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dbcccb7422035b781200ad7f48c0537bb39d1eb7.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Going International",description:"Halo 4: Complete a match on at least 8 different multiplayer maps.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/94a3ea7a9e3b31793749e982189fcfc3ad4408fb.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Piece of Cake",description:"Halo 4: Beat the par time on Dawn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0e808ec7087ebf50505a51ea5972c13f1e51469f.jpg",percent_achieved:"7.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Objective Secured",description:"Halo 2: Beat the par score on Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1d64661d65e99d763afdc5f9e7212a41c4b4a49e.jpg",percent_achieved:"7.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Medal Completionist",description:"Collect 10,000 campaign or playlist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/76002d2df62d1455e95975e1a39dba49ea0365b2.jpg",percent_achieved:"6.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Knowledgable",description:"Halo 2: Activate Terminal 10 on Gravemind.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d93bb4822da87d26f924f0a7b4b167e5cff0c4e3.jpg",percent_achieved:"6.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Memories",description:"Halo CE: Activate Terminal 8 on Two Betrayals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/af71ff1d113bd3a83c8fd7d9c20dba9f36bf58d6.jpg",percent_achieved:"6.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Mythic",description:"Halo CE: Find and claim the Mythic skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cb45dd520fc1d83e635bd2034c1d1178420d0ea7.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Askar",description:"Halo 3: Beat the par score on The Storm.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d18504ae9f7d891f2316e33da1eb8ef39a4e92ad.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One Way Ride",description:"H3: ODST: Complete any level without using a health pack on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2bc42cf5b556a86104e197ff4c0b4d0a4cd3d2b1.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"King of the Crows",description:"Halo 3: Beat the par score on Crow's Nest.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a9b6f9a691d0655881c8082a6032c99429896dc7.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"First In, Last Out",description:"H3: ODST: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/036ecb9fa9f751e11535c53f06409a194085d393.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Arrival",description:"Halo CE: Activate Terminal 1 on The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/15507932407f20145154d5ecf3feb6658d49214a.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Foreign",description:"Halo CE: Find and claim the Foreign skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a610f2c927f0f0e6ccfcb675589edf3f99fe611d.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Committed",description:"Complete 350 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/647329d17701b13ac2a520190bea3c95176689c0.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Forged in Fire",description:"Win 100 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/560ffdfe29de620ff91e4856cfa4973efa086a0d.jpg",percent_achieved:"6.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pillar of Awesome",description:"Halo CE: Beat the par score on The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fd7dcb6e3b29157a72e51c9308f0f4e2ccc3f57a.jpg",percent_achieved:"6.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Famine",description:"Halo CE: Find and claim the Famine skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f98e1c76fcc34269c705857c2a3b82a998963e13.jpg",percent_achieved:"6.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gods Must Be Strong",description:"Halo: Reach: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/74674d26cdc5bdecbd31ebb0ee4df7ec7de8a617.jpg",percent_achieved:"6.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reading Room",description:"Halo CE: Beat the par score on The Library.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/060813032b9ecac2f71b0ceb19f6f7d51a8d3e36.jpg",percent_achieved:"6.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hero",description:"Halo 2: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cd80c4f08c973f4b5f70a5c804de5e4af1af546a.jpg",percent_achieved:"6.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rising Waters",description:"Halo 3: Activate Terminal 1 on The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/96d43555099472144ac0419a71c6456fbb4fb4c5.jpg",percent_achieved:"6.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Veteran",description:"Complete all campaigns on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9972557425026fbf4c3ea5034a6d0457500a4be2.jpg",percent_achieved:"6.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"MVP",description:"Halo 2A MP: Finished as the top player on the winning team in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/77a33a2e90cd80aaa533db7421ec98eb9fd943b9.jpg",percent_achieved:"6.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Double Trouble",description:"Earn a total of 250 Double Kill medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2fa5738fb81d0d4e7a8abb88f9f76f69c6dc1da2.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Mythic",description:"Halo 3: Find and claim the Mythic Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/742308f024f998d8cfd3d5d7c727768991608849.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Thanks A Killion",description:"Kill 20,000 enemies or players.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6c821587019ec8431a8fa4547caebea6e64a6d39.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reviewer",description:"Halo 2: Activate Terminal 12 on High Charity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/98035f9b208a3a623da8a497008a678d6c3044b4.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Monitored",description:"H3: ODST: Find the 10th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b9ce42dfa408560493add6ce7d56e3e8dfd4a494.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Big Time Gamer",description:"Complete 400 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/49c5d41a84f1167baa9ca4e3b4c58e6bedbcbeda.jpg",percent_achieved:"5.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Iron",description:"Halo 3: Find and claim the Iron Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/80f274adc35f0c041ccfd4c13d1caa55a87d576f.jpg",percent_achieved:"5.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Exterminator",description:"Halo 3: Beat the par score on Floodgate.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/110aae4cccdc2dbd2c01f476defdbc25a854eebb.jpg",percent_achieved:"5.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Grunt Birthday Party",description:"Halo 3: Find and claim the Grunt Birthday Party Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/48e815b8839869810f212e727c62476bc9d68497.jpg",percent_achieved:"5.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Emergency Shutdown",description:"Halo 4: Beat the par score on Shutdown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/afc6562d29d00a628ed444cc7a81ffa7b9be4b00.jpg",percent_achieved:"5.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cold Fusion",description:"Halo 2A MP: Kill an opponent by detonating a Fusion Coil.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d1cce541779097d1db85ccca9fce69ab45213f88.jpg",percent_achieved:"5.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Iron",description:"Halo CE: Find and claim the Iron skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3401bd000bf644b86abb33102e90d40c44525711.jpg",percent_achieved:"5.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Don't Strain Your Metaphors",description:"H3: ODST: Beat the par score on Uplift Reserve.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/785fbbb3b9da5d8e0f860393416d4370c7df533d.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"I Love My Job",description:"H3: ODST: Beat the par score on ONI Alpha Site.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3e8ea530dd93076a8079612bab8655c646ce4670.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Long Time Fan",description:"Complete 450 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0d447796a895e2f245a5fe7146ddf36abccd2835.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tank Beats Everything",description:"Halo: Reach: Finish The Package on Legendary with the Scorpion intact.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b344a543476aa09b2c33acc58f5ff8cc0ba10c2f.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skunked",description:"Halo: Reach: Won a matchmade game of Invasion in the 1st phase.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3c94d0abcf941094f89caf66d2f79275469f93e2.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Taste Test",description:"Halo 4: Complete a match on at least 4 different game types in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b5f537c447caffeb4f5557db341978ab7fa78c92.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Negative, Ghostrider",description:"Halo: Reach: Get a Skullamanjaro in a matchmade Headhunter game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/edefd070c4c2e589f07c9e1b0493ba18b2963ed6.jpg",percent_achieved:"5.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Do You Remember When We Met",description:"H3: ODST: Play a game of Halo 3: ODST on the 22nd of any month.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b11bf976d0cd0caf555af2598d0ac9f970cceaf3.jpg",percent_achieved:"5.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Hang Onto My Words",description:"H3: ODST: Find the 11th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/192d9ef4e82961b4759771b480ee4cb06297dc59.jpg",percent_achieved:"5.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Fists of Fury",description:"Halo 2: Beat the par score on Regret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4fbffbbb9a078b5d46e730bfb4d5be614f71ecbd.jpg",percent_achieved:"5.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Need a Hero",description:"Halo 4: Complete every level of the game on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5b70dab81b247ebd8ae1b98b761367f587521902.jpg",percent_achieved:"5.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tourist",description:"Halo 2: Complete a match on at least 8 different classic multiplayer maps.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3da7ed58892ba28b208c3e7d830cb0d70d4227f8.jpg",percent_achieved:"5.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Librarian's Pet",description:"Halo 4: Beat the par score on Reclaimer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/76b3e6ec3b0ab3818c332a8793adcf8bb4e867ee.jpg",percent_achieved:"5.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Checkmate",description:"Kill 100 Watchers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6d7fd884027f350e1318c4b7ff0d12e968dfcea7.jpg",percent_achieved:"5.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You Can't Handle the Truth",description:"Halo CE: Beat the par time on The Truth and Reconciliation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6dffb166b1e8d0aa3d9c5dac55aef1b7a124b488.jpg",percent_achieved:"5.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Witching Hour",description:"Halo 4: Beat the par score on Midnight.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3e623064f6b2645a68f5c5e8863c5ecd9ea7b981.jpg",percent_achieved:"4.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Living Legend",description:"Halo CE: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/84ba9e7a369284bf5010a15a476c70ed77f77724.jpg",percent_achieved:"4.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"War",description:"Halo 4: Activate Terminal 1 on Requiem.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cbcda87360a991d773d54bca9dde507226a84e7c.jpg",percent_achieved:"4.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Does Whatever a Spartan Can?",description:"H3: ODST: Destroy a Wraith…with your bare hands.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/217365a643b0107b7148a4784ea9f4ce774b08d7.jpg",percent_achieved:"4.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Bits and Pieces",description:"H3: ODST: Destroy 5 Phantoms on NMPD HQ.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3e0a42cd78883d0895666e687fa28a14ff17f849.jpg",percent_achieved:"4.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"The Long Haul",description:"Complete 500 missions or multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f624832531e478d0e0ff7e11398b9111d294af7a.jpg",percent_achieved:"4.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bake That Cake",description:"Halo: Reach: Beat the par score on Tip of the Spear.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6a4edf630fa56534f012c8b26855d68a0a1b552e.jpg",percent_achieved:"4.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sharpshooter",description:"Win 150 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3f8a60051cff2c19667650fdad7ec580be699d31.jpg",percent_achieved:"4.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Finished the Fight",description:"Halo 3: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b619c3286c73b16deb121ef3beb3cc8dbe72d668.jpg",percent_achieved:"4.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Just Sayin...I Ain't Dead",description:"H3: ODST: Complete any level without dying on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9a6e59efa3a96d57d9a6b250bddd76429481d324.jpg",percent_achieved:"4.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"This Side Up",description:"Halo CE: Complete the Warthog ride of The Maw without being forcibly ejected from your vehicle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b5f1b053f3ef6e48320b60a72c2e89ac285436b4.jpg",percent_achieved:"4.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Keep It Clean",description:"Halo: Reach: Kill 7 Moa during Winter Contingency.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f602f953dbad0be7f9e24fe38c2db2b715256d13.jpg",percent_achieved:"4.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sightseeing",description:"Halo CE: Complete a match on at least 8 different classic multiplayer maps.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/23f13445be132701ed32585bb52f349d47b201a8.jpg",percent_achieved:"4.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Tough Luck",description:"Halo 3: Find and claim the Tough Luck Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/30784ddad243cb8c94c006e16a283383847d4620.jpg",percent_achieved:"4.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Give Heed",description:"H3: ODST: Find the 12th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7073d46128ecf3c1e52b408a4a227369850ddf60.jpg",percent_achieved:"4.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Sword and Shield",description:"Halo 3: Activate Terminal 7 on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a4b9b5193badc5be8752fbeca163b24dba275370.jpg",percent_achieved:"4.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pour It On",description:"H3: ODST: Beat the par score on NMPD HQ.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1f1b15aa7226267d3397cd07d9d60cfee75ca205.jpg",percent_achieved:"4.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Speedy One One Seven",description:"Halo 3: Beat the par time on Sierra 117.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/46935bbc9ce3bb5c4ae11336a19720dea3b0d350.jpg",percent_achieved:"4.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Thunderstorm",description:"Halo 3: Find and claim the Thunderstorm Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0f536ccdcb9bfadf8635d71b560cccfc170c81de.jpg",percent_achieved:"4.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Coin's Fault",description:"Halo 3: Activate Cortana's Terminal on Cortana.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2b0fbbec8eb35ab810f0887e1b4f0147f06545e7.jpg",percent_achieved:"4.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gunslinger",description:"Halo 4: Beat the par score on Dawn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3f7856ca0734596945f97d31cac6b68d854b88c3.jpg",percent_achieved:"4.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Overshields are for Sissies",description:"Halo CE: Complete the level The Pillar of Autumn on Legendary without picking up an overshield.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b24ab1207c731b96c2c77153d826ea2cb52b30c8.jpg",percent_achieved:"4.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You Really Can't Handle the Truth",description:"Halo CE: Beat the par score on The Truth and Reconciliation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6f1334a72bf26d1e4b27734fa823ba000512c69c.jpg",percent_achieved:"4.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Blind",description:"Halo 2: Find and claim the Blind Skull.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3fa330bfd37403ba349569c5d5a0b205c5aee2a1.jpg",percent_achieved:"4.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Survey Says...",description:"H3: ODST: Beat the par score on Tayari Plaza.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/92a9fdb403f320b272be21177e9d19a959588dbe.jpg",percent_achieved:"4.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Curious",description:"Halo 2: Activate Terminal 1 on Cairo Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a2cf0047310aa1883fad1f800a628d0c4d0ab023.jpg",percent_achieved:"4.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Doctor Is In",description:"Halo 2: Beat the par score on Quarantine Zone.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/69a2515f05460fe0075ada5dff0287b57c43c1a4.jpg",percent_achieved:"4.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Fog",description:"Halo 3: Find and claim the Fog Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dd8edefd0a0b338824ce9e1ca2fec54cc3551aae.jpg",percent_achieved:"4.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Put Up Your Dukes",description:"Halo 2A MP: Get 25 melee kills in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/35c2e9485ef47890b4d69d7ec469389cc17e4096.jpg",percent_achieved:"4.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Reed the Strategy",description:"Halo 2: Beat the par time on The Oracle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0ad217c45de3868c389d6cc8968bc5684dc69b87.jpg",percent_achieved:"4.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sounds Familiar",description:"Halo 3: This stuff is your history!",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e3d2afdd295fd77ba931eb0481d74446c37d65fe.jpg",percent_achieved:"4.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Speeding Ticket",description:"Halo 2: Beat the par time on Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/50c2c8f065e47b20f57df5e21fba143e61166307.jpg",percent_achieved:"4.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Spree Master",description:"Earn a total of 100 Killing Spree medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d58b3d8200dc4aeaa6c899a69b970639f15051bf.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Vetro Strike",description:"Halo CE: Beat the par score on Assault on the Control Room.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6bbf5440a83a72d9ededcd00e0ef8e6594795f7a.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Double Time!",description:"H3: ODST: Beat the par time on Coastal Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2789109f836ed068efaab352d63e688d7159fe7b.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Go, Chief! Gun It!",description:"Halo 3: Beat the par time on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/75a616887ad6c2e45c3b32699e0655b6363ae0f0.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tour of Duty",description:"Halo 2A MP: Complete a game in every one of the 6 updated Anniversary MP maps.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/62f1f74ea0f91c498a5401d4bb6403e61f8e0a6c.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Mean Streets of New Mombasa",description:"H3: ODST: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/04366af887e24cc7746171010edf40bb61322505.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Collection Eligibility Confirmed",description:"Halo: Reach: See, he IS in the game!",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/acd1831a522cd81af6b177059329fd8dfa001083.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Get A Load",description:"H3: ODST: Find the 13th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c3dacf6a085bbc7f8a12d5408ea9a7e4be66c32f.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Speedy Delivery",description:"Halo: Reach: Beat the par time on The Package.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b3c789a1c2bd12a63dfa2aede3bf340460d7c1f0.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Pleasant Trip",description:"H3: ODST: Beat the par time on ONI Alpha Site.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/47fddb87a9e278ceac7890d4c95df966842b8bcc.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Well...Maybe One or Two",description:"Kill 25 Engineers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7a4b5f4de7e08c07a9fe8b6dff7dabf554c4c703.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Primate",description:"Halo 3: Find your first missing links.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/40bf4f81943dec24e9f2582f1c7af05432155429.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Phantom Hunter",description:"Halo 3: Destroy 3 total Phantoms on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e5bbd42aa5ac67d9aad02b936de4266f7c33293e.jpg",percent_achieved:"3.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Flipyap",description:"Halo 3: Listen to the tale of a young Grunt named Flipyap.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4e7253e591a463345558055215c6a6b4b4ce1a6e.jpg",percent_achieved:"3.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Shadow of Sundered Star",description:"Halo 4: Beat the par score on Forerunner.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/11b7b0e1874c731b3262e7e673b4063e7695edf3.jpg",percent_achieved:"3.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Meeting of the (Artificial) Minds",description:"Halo: Reach: Find Data Pad 3 on Nightfall",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/532a53d35a39a92fea26e201375e4fbb1e9c34ac.jpg",percent_achieved:"3.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"In It To Win It",description:"Win 200 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ff92b70369d7702587d170bf3fb57fbb3f68aa9c.jpg",percent_achieved:"3.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Recession",description:"Halo CE: Find and claim the Recession skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1d7edc6bd720ec84e615cbcf1dd4bd3de7d752e4.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Determined",description:"Halo 2: Activate Terminal 8 on Sacred Icon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/818a5fb68a39732f90032a654ac9bdadf76bebc0.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ninja Redux",description:"Halo 2A MP: Kill 5 people with melee from behind in Anniversary matchmaking.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9b4029cd4af82dc25f52eadcf2069bb58ffc0aa2.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"No-Fly Zone",description:"Halo CE: Destroy three of the four Banshees on Halo during a single play-through.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a88bc7755a441c94dc6ee3cd4085a784ad3e1a57.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Official Business",description:"Halo 2: Beat the par score on Gravemind.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2e58a1955699c46cb6f2ad53e0acd5faa88e30b7.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Parting the Sea",description:"Halo: Reach: Beat the par score on Exodus.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3abd3c4b0dbd479099e194c537a23650643f72b8.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Siege of Ivory Tower",description:"Halo 2: Listen to a hidden music cue in Halo 2.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/34d2c36d13ab42782338205f2439d7c5cdd58a64.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Orpheus",description:"Halo 3: Beat the par score on Cortana.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a3e36b121dfc20de97592e64168aca26c6e2e30a.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Quis custodiet ipsos custodes?",description:"Halo CE: Activate Terminal 7 on The Library.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d4287901b1d495567e65525e3385118dc967bc54.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Eye Patch",description:"Halo CE: Find and claim the Eye Patch skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dd30418e25a9c8cb9322567011cff5c967f7818c.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Catch 'Em Napping",description:"H3: ODST: Kill 5 sleeping Grunts on Mombasa Streets.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d22412fad31cb2850d9b39c209806b160293e25f.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Dark Fortress",description:"Halo 4: Beat the par score on Requiem.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/928c700f58d29e3b79f4696643e70319fa632c5c.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Read Halsey's Journal",description:"Halo: Reach: Find Data Pad 2 on ONI: Sword Base",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/04597ca145ab746f6585687f4afe1636eb97232e.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Needs More Whammy Bar",description:"Halo 2: Complete the level Regret with the Prophet Birthday Skull activated.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e6dfc10a246fea5084b1a22dc76afd1c6dbe35c6.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tipping Point",description:"Halo 3: Activate Terminal 4 on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c1177c78ea26f791699300c5b5bab6467f2f0573.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Famine",description:"Halo 3: Find and claim the Famine Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0f6656035ce03fbb73c9733f2e0413c70086ebcc.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rooftop Runner",description:"Halo 2: Beat the par time on Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a911755cf6de4375b9a57d6f6ce040d3458a9a9b.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Snoop Troop",description:"H3: ODST: Find the 14th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/95de5df8db8c3c2e3985dc837f277d3b8a69c835.jpg",percent_achieved:"3.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Boom",description:"Halo CE: Find and claim the Boom skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ffe7dc021fe9f0aa0de9928169cac6186defe007.jpg",percent_achieved:"3.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Digital Destinies",description:"Halo: Reach: Find Data Pad 9 on The Pillar Of Autumn",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a37b62eb041efe6b8f3bb844be4738dea2c78331.jpg",percent_achieved:"3.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Giant Hula Hoop",description:"Halo CE: Beat the par score on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/62f74dc66bab715d87ca8022b0371c574e41deb0.jpg",percent_achieved:"3.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Man's Land",description:"Halo 2: Beat the par time on Uprising.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/050adc064d099339c1981ea6e4c17b9cbac92d07.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Master Forger",description:"Created and saved 5 Custom Maps in Forge.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5fbaff474363d9d2aedfc6493bd75335bd9a8d67.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Give Him the Stick",description:"Halo 4: Take out both Hunters using only the Sticky Detonator on Composer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0f1a3e07dda90db5be3abe4dbbf255eab232a89a.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A Monument To All Your Sins",description:"Halo: Reach: Complete every level of the game on Legendary difficulty, by yourself.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5bea2fe529d159be48d4e70f8e5513ec9b266ef4.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Knights",description:"Halo 4: Activate Terminal 5 on Shutdown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2d4382ca229e58811c8201d2749505297b7146b3.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Leave None Alive",description:"Halo 2: Beat the par score on The Oracle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ec94de504f091a9ab14b476f2b82a29bd3bfe4bd.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Window Shopping",description:"Halo 2: Complete a match on at least 4 different game types in classic multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/83ddb5903b90b1df15f8768ecde44e8ae1127540.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Legend of 117",description:"Halo 4: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1de94c35b17ea10d68bdb9815771b91f0178b96e.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Justice",description:"Halo 4: Activate Terminal 6 on Composer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5dc3cb058984dcbbdf7b4dbc7aefbe73f8fe570c.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Minority Report",description:"Halo: Reach: Find Data Pad 5 on Long Night Of Solace",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/181425e828175c3bbaa0e8f782bb4d539695f718.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All Ears",description:"H3: ODST: Find the 15th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e55ff39ba4cdcbd6a230250be38d8dd486d1a1e0.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Time Shift",description:"Halo 3: Beat the par time on Crow's Nest.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ed63dca5d50ff8a465061126b8a321b8eec8f480.jpg",percent_achieved:"3.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Inundation",description:"Halo 3: Activate Terminal 2 on The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/16cd249209006ed89c0f2c9048c1b8932f561eba.jpg",percent_achieved:"3.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Departure",description:"Halo 4: Complete all chapters in Spartan Ops Episode 1.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b7ea3fbaa15a9589b7f214d10d735fd7b74594e0.jpg",percent_achieved:"3.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Battle Hardened",description:"Win 250 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2f919314e8130b66ed6f7257618566df2df45e51.jpg",percent_achieved:"3.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Torchbearer",description:"Halo 3: Beat the par score on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5a5ae101a2879ff489a942973187bb2e71bdf5b6.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Quicker Than Reading the Book",description:"Halo: Reach: Beat the par time on Exodus.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d7bb2484ed0196cbddc94867b2735791280e1627.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Winter Urgency",description:"Halo: Reach: Beat the par time on Winter Contingency.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4d6500d6e446792728feb33bee5e60cac0bace54.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Tilt",description:"Halo 3: Find and claim the Tilt Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/90ae821961450c8be7f19d73ea7cc95a5e3480bb.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Aim for the Head",description:"Earn a total of 2,500 Headshot medals in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e1e7cdc1e8f07ba8458bfb05d5e9f936477c0d88.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Legendary Anniversary",description:"Halo 2: Complete every level of the game on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0adbee515e4f4be37cb02fbf773e0a5ed513d923.jpg",percent_achieved:"2.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"War Hero",description:"Complete all campaigns on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2c7785b83c1848e2444ff89999e7342e50b37e16.jpg",percent_achieved:"2.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Catch",description:"Halo 3: Find and claim the Catch Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/452fc83eb6f052274edef649d0ea1c060b28b67c.jpg",percent_achieved:"2.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ear Bender",description:"H3: ODST: Find the 16th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/66e77807024dd5c1460ba7536a391dcedebf5e05.jpg",percent_achieved:"2.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"What About Those Tanks?",description:"H3: ODST: Destroy 7 Wraiths on Oni Alpha Site.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/02316bda1e7c3cd0453106a2a957e81a94e717a3.jpg",percent_achieved:"2.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Clear and Present Danger",description:"Halo: Reach: Pad on the run.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/44328d340851f1ea597be7a510a2fd0b8c650363.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Before the Fire",description:"Halo 3: Activate Terminal 3 on The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/18707090d07ef75b76d1818a8f01816c757bd4d4.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Blown Out of the Sky",description:"Halo 2A MP: Blow up the Banshee or Hornet in flight while piloted, with the Rocket Launcher.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a074c1cc4e1461100e9d177aba6fadaf6b807a14.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: Cowbell",description:"Halo 3: Find and claim the Cowbell Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4d6016800040242ce06bca16daa4ae1e699557d9.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wyrmslayer",description:"Kill 250 Hunters.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5595a4b7ae90845c027dcd06df395a1c9b24cca3.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reach Has Been Good to Me",description:"Halo: Reach: Complete a Halo: Reach playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/648a54bdfd8b77f92462ef7f856544e85f7260fe.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cowardly Grunt",description:"Halo 2: Listen to the Cowardly Grunt's woes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/41ce08a4d8fcf78ebc843aa556c1a5c932ef1e18.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cryptum",description:"Halo 4: Activate Terminal 7 on Midnight.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/28eac9cd964ce104d10a1c146b7af94bdb35e57d.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Unreliable Narrator",description:"Halo: Reach: Find Data Pad 10 on Winter Contingency on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/21141963d236b308985ac87773029bf5ae1b40c2.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"TLDR",description:"Halo CE: Beat the par time on The Library.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/af327b3eb712582a7855c3c4af4225995abb2b1f.jpg",percent_achieved:"2.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Game Master",description:"Created and saved 5 Custom Game types.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f8aa26bbc9af66e17632667da38e19863d9e62e1.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Plugged In",description:"H3: ODST: Find the 17th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6a36e2cc88b7a3a2653cb87398255a2b2b9099e1.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Lightning Strike",description:"Halo 3: Beat the par time on The Storm.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/00d2a0d27845f84a355fd33af56e14e102cf0d7b.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bearly Contained",description:"Halo CE: Activate Terminal 6 on 343 Guilty Spark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6dfab5814a17815d4401626ac1ca57b45c839312.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Walk It Off",description:"Halo CE: Complete The Pillar of Autumn on Legendary without picking up a health kit.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8a3d6f6732e1617d0f02276a20389acec5438023.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Headstrong",description:"Halo CE: Beat the par score on Keyes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/24e65e60f3c512cc7eea49d3c103a7ff371446a9.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cool Story Bro",description:"Halo 3: Listen to the story of the Final Grunt.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6f6816885f0c707f9cfb3d11602f9f6c06bb4556.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"It Was Inevitable",description:"Halo CE: Beat the par score on Two Betrayals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fdf1dee2a6a38a7ac046fdad92b9c8d3a8f11a51.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Thermopylae",description:"Win 300 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6a47a2514c71a71fe1a2b31b9ef93a741a1c981e.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Attentive",description:"H3: ODST: Find the 18th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a9abfb77ab6e52c3a8a8222e54ff9164954d7f99.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Charted",description:"Halo CE: Beat the par score on The Silent Cartographer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1d75ceaf8aa20c85925da0741f20f1b4854f286b.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 3: IWHBYD",description:"Halo 3: Find and claim the IWHBYD Skull on Normal or harder.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1ebd7c20bead43d6d0f1e7d3a62c3192982a758d.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rampant Speculation",description:"Halo: Reach: Find Data Pad 4 on Tip Of The Spear",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/770d58b08d7d71ab6b5fe77a5ade7ce4356da6cb.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"HBOrg Special",description:"Halo: Reach: Party with the DJ Brute.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b1a41001ad94836f7300ecd49601f1f99799054f.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scorched Earth",description:"Halo 2: Beat the par score on High Charity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/01f12f307ebbb5958e91a19483e2141b96f17eec.jpg",percent_achieved:"2.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Circuit Breaker",description:"Halo CE: Beat the par score on 343 Guilty Spark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4cf0b8e62c23aa5960a0f96304f8551ba43d20eb.jpg",percent_achieved:"2.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Malfunction",description:"Halo CE: Find and claim the Malfunction skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/55827eebea6bae94787daa9e5a9b849d9c230e0e.jpg",percent_achieved:"2.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"YOLO Strats",description:"Halo 2: Beat the par time on The Arbiter.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8ea49c4d20085df2b256b985f8624da00e0d12f1.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Terminal Conditions",description:"Halo: Reach: Find Data Pad 8 on The Package",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/777e868db9f68c10ca6fa3bfaeee9193f85b0d49.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Babbling Dead",description:"Halo 3: Activate Terminal 6 on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/27f97aa7844f1267827f2ac1e85d87b270b0d73c.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One For the Record Books",description:"Halo: Reach: Beat the par time on New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6ff0198d4b438ce69cd6603b71c3053d31f4076e.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Watchful",description:"H3: ODST: Find the 19th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/25b8706803c0a4be126f68b3b82db30ab4140429.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Boot Camp Hero",description:"Halo 3: Complete a Halo 3 playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/49abdcc43e7aad37ca0fb10e08e07ed10691015a.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rex Sword",description:"Halo 2: Grab the energy sword on the level Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/285dabddb34a48e7463dd4cf84bf93a759320a86.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Dabble in Slaying",description:"Complete one cross-game playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/859444f8b59fe91ed3b07202e2dd1df4403256e3.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign","Co-op Campaign"]}),this.TAchievement.$clone({name:"Like Peanut Butter and Chocolate",description:"Halo 2: Complete a level in co-op on Heroic or Legendary with the Masterblaster Skull active.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a3e38fcbd189a2a8450b651d8d76a81de012cf9c.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Those Left Behind",description:"H3: ODST: Finish Tayari Plaza with at least one Marine still breathing.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0e2920eb3751d3ac36857c0c6afaaf35fff34f0a.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Jorge Can't Have All the Big Guns",description:"Halo: Reach: Use a Pelican turret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/84dc3026930ebe38a6e28e6f17ea7e3f62121e53.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"He Never Gets Me Anything",description:"Halo 2: Complete Delta Halo without entering a vehicle on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d154fcc5d3a0c51b9e8be6d7f6a47701efa01b97.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Info Dump",description:"Halo: Reach: Find Data Pad 6 on Exodus",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/11b94389361262077dc8e8678fcb291306029415.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Bandana",description:"Halo CE: Find and claim the Bandanna skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4fa2a080b7fd6e22d3ed661d091c96f65909eeb0.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Meddling and Madness",description:"Halo: Reach: Find Data Pad 13 on Tip Of The Spear on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/34b468fa345bcda6ddc8b0848879dc9bed42bb1c.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cold as Ice",description:"Halo 2A MP: On Lockdown, kill an opponent with the hanging ice.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ba90febf2560146d41d4168280d9ba23c998167c.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Nagato Makes Moving Easy",description:"H3: ODST: Complete all Halo 3: ODST Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8883cd5b3510636bb67972547324d502e1571047.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Get Me Out of Here!",description:"Halo CE: Ride in a Pelican for several seconds on the level 343 Guilty Spark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a757e110818e5479bafe3f593370f6d27690eee0.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Observant",description:"H3: ODST: Find the 20th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d1fd03277c4e851bc17ecb8b16e3b734f4fa5971.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Artifact",description:"Halo 4: Complete all chapters in Spartan Ops Episode 2.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d4d831318cd35cda309c26c72392d68d6a5bc83a.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Grunt Birthday Party",description:"Halo CE: Find and claim the Grunt Birthday Party skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/58b9fd3e48b91130e6c6cefd106b0231cca4b5bc.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Unto Dust",description:"Halo 3: Activate Terminal 5 on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a09ad21e60b28a7b103370c3a6eedb6f691551ad.jpg",percent_achieved:"2.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dogcatcher",description:"Kill 1000 Crawlers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0f5121eeeafc0119c27231d174f1d957850b636f.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Knight in White Assassination",description:"Halo 4: Assassinate a Knight in any Spartan Ops mission.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7815f4c8af26b2a34bc4d69b3b7a56f9c1ed28a8.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scout",description:"H3: ODST: Find the 21st Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/105fbe33e8cfe33ec60ea4c740ca360a4095b278.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Now Just You Gúta Minute",description:"Halo: Reach: Beat the par time on Nightfall.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/069f8bd0ab257e065ded00cd33c69610b6b16e91.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Thirsty Grunt",description:"Halo CE: Listen to the Thirsty Grunt talk about his eating habits.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c818f0c623115b56fb60d33b608c88990bf3337d.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Generous Tipper",description:"Halo: Reach: Beat the par time on Tip of the Spear.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c4688d20895028f2569c2deda6db1a7f10fe4d67.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Consumption Junction",description:"Halo CE: Beat the par score on The Maw.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e178ee5d8e6d533f1ba968a7e6a978642f177c8d.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wait, How'd the Ship Get Down Here?",description:"Halo: Reach: Beat the par time on The Pillar of Autumn.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d1be9ca029e9f679e99d01b05a16c6354f49f01c.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Striking Fear in Their Hearts",description:"Win 350 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3225eda8c7df23568203b3fb99f4066cc560b30b.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Checking Out Your Options",description:"Halo CE: Complete a match on at least 4 unique game types.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/71ec1382048216eceb24cbaf8dffdcfa6bdb9047.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Pinata",description:"Halo CE: Find and claim the Pinata skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3a9b79b5f5d08f3cce3cc30d023bbd882a8bd87b.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Adventurer",description:"H3: ODST: Find the 22nd Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5a4931158e1ae7493b62f46f624f1e37c71a45c9.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Fog",description:"Halo CE: Find and claim the Fog skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/14d2d94c76aa9a79c01e13329d7d6ad149aafde9.jpg",percent_achieved:"2.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Spotter",description:"H3: ODST: Find the 23rd Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cd3f96f6b06b50a9d8aad276c57719f76b5315d1.jpg",percent_achieved:"2.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Scurty Bump",description:"Halo CE: Beat the par time on Keyes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1dd48f19d6fa8479b6887a765496277d0a67fbdc.jpg",percent_achieved:"2.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"NEXT!",description:"H3: ODST: Complete a Halo 3: ODST playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/af598fc5e9547aff8405a6291926d9333e6a7fdf.jpg",percent_achieved:"2.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:'"BLAM" Said The Lady!',description:"H3: ODST: Swap Dare's pistol for a Rocket Launcher on Coastal Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4b0597725f16c9e798a03f83a6786b48e21465f4.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Considerate",description:"H3: ODST: Find the 24th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9a43cbb484e5eeefbbfd9b555a310401ee1c9027.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Saturday Morning Cartoon",description:"H3: ODST: Is there a toy inside?",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/23fdc6693b091f37dfb97e47fd9181f6381a199e.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"On Your Toes",description:"H3: ODST: Find the 25th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bca360fe86face569e5388b68b42dd6f1cf0597c.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"A Fine Choice",description:"Halo CE: Complete a Halo: CE playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dd6725af32e5a1b551056e514f406e3949ecc596.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Making History",description:"Halo 3: Beat the par time on Cortana.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b36f40a1dba83084a852de37027d52dad3b57348.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Capacious Cartography",description:"Halo: Reach: Create a custom map using Forge World.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1ba9cfbf96c6b7c6b215d981f806db7a96c6f651.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Betcha can't stick it...",description:"Halo 2: Stick a Plasma Grenade to a Stealth Elite on Outskirts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9f4fc570fad73e156c3f4027e371af052dee6dc7.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"How Did I Lose All My Fingers?",description:"Halo: Reach: Beat the par score on The Package.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1f18013a6e95d485d7c77a76eb5c9e383f9ae497.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dear Diary...",description:"Halo CE: Activate all Halo: CE Terminals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/691d0dc1bf2bdd0449cff3650da969a2f7f09ee6.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Iron",description:"Halo 2: Find and claim the Iron Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cef7e7cbb0664037b72ba144352b8246066e237d.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Steady Aim",description:"Win 400 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/94aa2c047d4b38e8c705d39459fe4682a78e3982.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo: CE: Black Eye",description:"Halo CE: Find and claim the Black Eye skull in remastered mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/40f6395d2f330eb518183fc23cc021578535bf0b.jpg",percent_achieved:"1.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Explore the Floor",description:"Halo 4: Trick or force a Hunter to fall to its demise on Shutdown on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6d2a60767ce7375273de208423875f4a7d579cd3.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hot Zone",description:"Halo 2: Beat the par time on Quarantine Zone.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c7e228e29aff9c1f487fee753a8d8dc784b64119.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"So You Don't Want the Tank?",description:"Halo 2: Beat the par time on Delta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3c24bed44f605fb4c85b003915a1b8105adf76d4.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"What Does It All Mean?",description:"Halo: Reach: Find Data Pad 11 on ONI: Sword Base on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e3d9eb57846e18477966f4c70ca1ff7e90fde703.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Your Attention Please",description:"H3: ODST: Find the 27th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4c7f82f7ae4b318f4e604ef8f2e3a36b0ecb3635.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Archivist",description:"H3: ODST: Find the 26th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ae7e45ac36c889fbdda1aee0170fd95db9a64bf5.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Whispers Across the Galaxy",description:"Halo 3: View the communique from Mendicant Bias.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e8122aee69d9cec931d31c4243b856eb1db0b6d1.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"They've Always Been Faster",description:"Halo: Reach: Clear Winter Contingency without setting foot in a drivable vehicle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fdba16a5672637342fc9c528dd2bcdb4c7ae6e5a.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All According to Plan...",description:"Halo CE: Kill the first group of enemies on The Truth and Reconciliation without being detected.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ce4ea654417d910114d2af8d6fa507f5458d9967.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Triple Threat",description:"Halo 2A MP: In Ricochet, pass once, score once, and kill at least one enemy in the same match.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bd05187deeb6e344b765b3405d4a1473b1adde29.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Catherine",description:"Halo 4: Complete all chapters in Spartan Ops Episode 3.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/59e4b0a91be322e78e063447ff94f3636474ee8e.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Heading to his Destiny",description:"Halo 3: Destined for greatness.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9ee6b9601648e7d8728a1da73a598c495435ba44.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Guided Tour",description:"Halo 2: Beat the par score on Sacred Icon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9b405e99608bb69db2e8b4f90b2cd6a876b2b656.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Thunderstorm",description:"Halo 2: Find and claim the Thunderstorm Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fd270c18bb3f5518c0f00de4de919b0ee738fdea.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Lightning in a Bottle",description:"Halo CE: Beat the par time on 343 Guilty Spark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/955c9b219b3514c4c3d8f8083790e1677924d7c8.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: That's Just…Wrong",description:"Halo 2: Find and claim the That's Just...Wrong Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/93694edc04c8d60aaab3379de1886415b5a645f7.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Catching On",description:"H3: ODST: Find the 28th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8515950b2f64e79904d8c2fd2ac5b17e8f803d35.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Wisening Up",description:"H3: ODST: Find the 29th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/70f207c57c8ad07c792979552af4309a7b7584bc.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Quick Trigger Finger",description:"Win 450 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/887c25ab0d57729c4d476d61377084ec556f831c.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Feet Firmly Planted",description:"Halo CE: Complete a level without jumping.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4278c2b684bac6b3db38730dc291227ebb7f014f.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bomb Squad",description:"Halo 2: Beat the par score on Cairo Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a63d8a64e4588f973a2dfc354d4fd410b3c162ec.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Play Us a Sad Song, Claude",description:"Halo: Reach: Listen to a hidden music cue.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7647f299cecfe21682de9f28274d8437cd9bc724.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You Had it Coming",description:"Halo 4: Beat the par score on every Halo 4 level.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e25efa89bf07903233e0a045f0e3d08e3f32b498.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You're No Chips",description:"Halo 4: What do Marines know about sticks?",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8878d9d18bb7e77b4287eab01401b586e522bc00.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Unsolved Mysteries",description:"Halo: Reach: Find Data Pad 12 on Nightfall on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4e250b0f9b7f6c2c0e3f7e1cfc05715698222097.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"E E E",description:"Halo 2: View both signs in the level Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/afef38fa5215af4f43955edab6102e2deab78852.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hit The Beach",description:"Halo CE: Beat the par time on The Silent Cartographer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4a9ae3aac0e3d5313bfeebe145e485bcb47d5cd0.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Witch Doctor",description:"Halo 3: Find and claim all Skulls in Halo 3.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c6ca8f872cc2c834205256fd746a7e4349694064.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dim Mak",description:"Earn a total of 250 Beat Down medals in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9b91b2a8b76646d19b3ed3662ecde8fd9691e9c1.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Legend",description:"Complete all campaigns on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e74bcb63ded712b2d06c8edd39c4aaede6be0c9a.jpg",percent_achieved:"1.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Like Crazy",description:"Halo 2: Collect the Rampant Cortana toy in High Charity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c99db0bc3438d54d5d2bfc635df9cc197f59a6e4.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Eminent Domain",description:"Halo 2A MP: In Territories, control any 3 Territories simultaneously for 30 seconds.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/539acfe691ebf60fc53a65160404dc7a0c3b866f.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"One Got Away",description:"H3: ODST: View the missing link.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c8c6b57a796741af9690f4485326fdb80644878e.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Workers' Compensation",description:"Halo: Reach: Splatter an enemy using the forklift.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3a9bb14d5cf80d9cccb56622f72e0ead81ee26a2.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Smoking",description:"Halo CE: Disapprovingly look at Captain Keyes' abandoned pipe.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3fa285aaf9c6aa92034881b510567850b2fd8787.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Firefly",description:"H3: ODST: Kill a Drone with a flame grenade on Data Hive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/33442d970987f23b79f7e183b0b7fa4046e8a2d0.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Lone Wolf Legend",description:"Halo 4: Complete every level of the game on Legendary difficulty, by yourself.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ed3dafd6254041493839079d443c856c0c6def0a.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Didact's Hand",description:"Halo 4: Complete all chapters in Spartan Ops Episode 4.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e102eb7f08cef136927427d98e8f79a28e109124.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Chest of Gold",description:"Halo 4: Complete a Halo 4 playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/193a49d04fbc306f793dc8a90c7f18ed2a3370d0.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Are We There Yet?",description:"Halo 2: Beat the par time on The Great Journey.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8c349bd06cb2aa19549c686d845dd06db3e4846e.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Seconds",description:"Halo 2: Complete a Halo 2 playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/66f65d737c86d41e7d4624542f02a10789cfda65.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Yes No You Decide",description:"Halo: Reach: Find Data Pad 19 on Lone Wolf on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/57139c0c58abc8030a416171091e8f81abdf70c7.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"This is Not the Greatest Lab in the World…",description:"Halo: Reach: Find your way into Halsey's Lab on The Package.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cb6df8d11eb018dc7a4a5bc28d1642903ec1bbd3.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Audiophile",description:"H3: ODST: Find the 30th Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/591b341b03e9b6011b0c0b0ece375c20b077b473.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"First Stop: Anywhere But Here!",description:"H3: ODST: Beat the par time on NMPD HQ.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5343aa9d273fef8bcaf6bc4b8692ce9af37f4140.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Party Pooper",description:"Earn a total of 250 Killjoy medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f4d6246ae31fa78c213a637a868cee4672e90679.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"The Answer is Simple",description:"Halo: Reach: Find Data Pad 14 on Long Night Of Solace on Legendary Difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b0f0bd053a554ef939488a5b6428448ecd1c368f.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Record Store Owner",description:"H3: ODST: Find all 30 Audio Logs.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cc32b3d7cc4b306e97035a6eeedc22d48c3cf1ab.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Paper Trail",description:"Halo: Reach: Find Data Pad 7 on New Alexandria",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a2bdf8a7daa7b0df3be8110ece1fbd6426073afc.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Commuter",description:"Halo 2: Complete Metropolis without entering a vehicle on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5300c3422c917374e7a7cfc7c6546503e7397ddc.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Don't Make a Girl a Promise",description:"Halo 2: Collect the Cortana toy in Gravemind.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/54ba912cceb3a8a5330cb561ec7d4b30d77bb144.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mystery Achievement",description:"Inscrutable. Mysterious.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c801e863aedb16fea3aa8e45adcde40cf4296d4a.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Hype Is Real",description:"Halo 2: Beat the par score on Uprising.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f11fd52e4f7de05ee35aaeb33032794103f2bae0.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"And So It Begins...",description:"Halo 2: Collect the Master Chief toy in Delta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/81e1dc68de46988b68eb42a7572fe00591bbf920.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"GOOOAAAAALLLL!",description:"Halo 2: Shoot the soccer ball in the level Metropolis.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e96714b707a9fbf22021ca88d0c81c5bf5829337.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Walking Encyclopedia",description:"Halo 2: Activate all Halo 2 Terminals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5ff806d143774dc13309214fc95538b5176332d9.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Grunt Birthday Party",description:"Halo 2: Find and claim the Grunt Birthday Party Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0610530907960e4ac03a5709dc3b89e5ce981cdf.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Just Like Storming a Castle",description:"Halo: Reach: Beat the par time on ONI: Sword Base.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f96eb30a0975ce164a760e2de4ea373f12d21794.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Begins with a Single Step",description:"Halo 3: On Tsavo Highway, complete the level without entering a vehicle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/21129d0daec9e0d5821cd19f70bfed0413797f5c.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Famine",description:"Halo 2: Find and claim the Famine Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3860de9f8e2109805be3f26c85eb9a1a84d53b1d.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Flyover Country",description:"Halo CE: Beat the par time on Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cb6f6623884e10c89a42d271478683b86995fb6e.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Better With Age",description:"Halo 3: Beat the par score on every Halo 3 level.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/06debd311d19058160b55bc3974b22358f2b22f2.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"We're Gonna Need a Bigger Ship",description:"Halo: Reach: Fly both the Pelican and Phantom on New Alexandria.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fbb6a29839ccfc023789da4e0762fe4dbb213c12.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Of Patience and Partiality",description:"Halo: Reach: Find Data Pad 15 on Exodus on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9bb4c729a758b59ca1482afe08ddf29b6502e84b.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Multiplayer Champion",description:"Win 500 multiplayer games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0ed29071cddc96a3570ba45e0e8af0e7e32fffab.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Headhunter",description:"Halo CE: Find and claim all Skulls in Halo: CE.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/54debf623f71494687283170f098f999360f3c19.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Stone Unturned",description:"Halo 3: Activate all Halo 3 Terminals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9a6380c1a7f01925fe545b0ab5f206a181e2dc17.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Curious Composition",description:"Halo: Reach: Find Data Pad 16 on New Alexandria on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b3523ada3f5efef2fa1072dc89b3921508810e8c.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dirge of Madrigal",description:"Halo 3: Trigger the hidden music cue in Halo 3.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/799e0a996b072c6c3f94da965e81314e0cdd6507.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Assembled the Majority",description:"Halo: Reach: Find Data Pad 18 on The Pillar Of Autumn on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a7392fb44b0751b87d34cfceb1a02fa23f7fd6fa.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ouroboros",description:"Halo 4: Beat the par time on Infinity.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2add0badadd87cd6b8ab99cfb132ddcdf005f971.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Catch",description:"Halo 2: Find and claim the Catch Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4df0d3a75e6227bd6ed9213aa32a2e2e241d4a95.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Classic Completion",description:"Halo: Reach: Complete Exodus without using any armor abilities.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f7bed0d68056d31e5a6b137d7d52847a351f3287.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Envy",description:"Halo 2: Find and claim the Envy Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1b3a654cb26be58ef0aa4c1c4df097df37dfe2ec.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Assassins",description:"Halo 2: Find and claim the Assassins Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/90667166f6dd8b045900c18675955465922780ad.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Silent Shepherds",description:"Halo: Reach: Find Data Pad 17 on The Package on Legendary difficulty",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a0c0370a3fca868f93cdc324293269ebb4b15b5a.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"This Oliphant Has No Brakes",description:"H3: ODST: Beat the par score on Coastal Highway.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/824cfe1b1b68821a772719bb95662389ff5e8df0.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Sandbox Skull",description:"Halo 3: Find the hidden Skull on the Sandbox multiplayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ab5aa5855534de9d2a0c98f57a087b8f74dea5eb.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Regrettable Turn of Events",description:"Halo 2: Collect the Prophet of Regret toy in Regret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/92d10dfdfbbe439806ebe5f0a625bfa931de1775.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fowl Hunt",description:"H3: ODST: Kill 3 Jetpack Brutes with a shotgun on Oni Alpha Site.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/eb1f1f7b3e9d2bdfc88c5c0740b7f304dde7af1d.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Memento Mori",description:"Halo 4: Complete all chapters in Spartan Ops Episode 5.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/33aeb9efc015bda70983cd0df8baa30a00fabb74.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"How Pedestrian",description:"Halo CE: Complete Halo without entering a vehicle.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6873cd5454a165235d375b2b27f72f00b577c94c.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"An Artist's Canvas",description:"H3: ODST: Beat the par time on Kizingo Blvd.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9fb338f33e3198dbd8cb9233358a6b334b07922c.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Terminus",description:"Halo 4: Activate all Halo 4 Terminals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2c98d9a37a7cfa6b864f4617821e62250cec1f62.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Because It Wasn't Hard Enough",description:"Halo: Reach: Complete a Legendary campaign mission with 3 or more skulls enabled (Scoring Only).",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8cc2866362723acabe613201f0215e4c769a8334.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Haplorrhini",description:"Halo 3: Find a lonely missing link.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4bfcebf673912e19b1bd21a0c53a48baf95e61d5.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Symphony of Pain",description:"Halo 4: Beat the par time on Composer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/fbe11fab89983c4f33ef2a2c279b2ecae74ed707.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Madrigal Debut",description:"Halo CE: Trigger a hidden music cue in Halo: CE.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e5543a3a68e27e8094b82b25d659d9afd280af8b.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Chief, Smash!",description:"Halo 4: Kill 3 Crawlers in one hit with the Gravity Hammer on Midnight.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5da120c87a91c4907e6a8b840870c79fcb071fbb.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Sputnik",description:"Halo 2: Find and claim the Sputnik Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ee1f06e6bb01f8f91588a37ce320caa0a7df601c.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Anger",description:"Halo 2: Find and claim the Anger Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/24a929207a9e19cac437e0aad76e206c8393b28b.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Animal Habitat",description:"Halo 2: Spot the hippo on the walls of Headlong in classic multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/594ccaadeabbe1f047fc85d6b826c99ba2346cdf.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Stayin' Alive",description:"Halo 2A MP: In Juggernaut, survive as the Juggernaut for 30 seconds.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9e8bd7136b15916c9dc825108fc016e82c2a92b0.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Skeet Shooter",description:"Halo 2A MP: Killed 15 opponents that were airborne from a Man Cannon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e7e650d20b8ce17c957e61f155f63a8efff56874.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"The Will of the Prophets",description:"Halo 2: Collect the Arbiter toy in Sacred Icon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5f9e32f76bc2bd6c66924e9fe4aac1228860dc08.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rule Your Thirst!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Warlord.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/52bd525e403638908668d5b1a157f83b92b4c901.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"He's Running a Marathon...",description:"Halo 2: Spot the developer in the opening cutscene of Gravemind on Legendary in Classic Mode.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4cefdd3a79a01595bb3d18255ae3170fefa44e58.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Back In The Day",description:"Halo CE: Play a CTF custom game on Blood Gulch with 4 players. Tri-tip optional.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7a2023455f43e508770b4dfd7d90ca30ffffba1e.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Canonical Conundrum",description:"Halo: Reach: Find all Data Pads.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/75c5920cef2d2ae6f568d050495591d8bd69691a.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"High Altitude Thirst!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Zenith.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0cbb98f7ff1854da51f670080d0ecd18e446900e.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Gate Your Thirst!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Stonetown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/66ad8bd3e3a8fae9f6adb70f8beb818a3c834b58.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Would It've Killed You To Take The Elevator",description:"Halo CE: Beat the par time on Assault on the Control Room.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a9de17b8f4640a45322b4b627e3e9d94ae979e0c.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Thirst Locked Down!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Lockdown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/47847eb72f247bb6e2695e47e0ec4c427b8028f7.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Waypoint",description:"Halo 3: Beat the par time on The Ark.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3fbda589f51f26e00ab2554657b7e7afc79d1ad8.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Missing Link",description:"Halo 3: Watching. Waiting. Plotting.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c2930ce078fa12fbdc55a5cb0d26349630378fd6.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Longshore Skull",description:"Halo 3: Find the hidden Skull on the Longshore multilayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b01bf1d6762cd80fb483559f9d23d84ac76cb637.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Pain, No Gain",description:"Complete 1 mission with the LASO playlist skulls enabled.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/17508e05b9ec855602877c50e67513a9811b5ca9.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scarab Lord",description:"Halo 2: Acquire the Scarab Gun.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/63fc6b655a6d8506f8d86d8f6a043c948e605e3a.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Terminal Velocity",description:"Halo 2: Beat the par time on Sacred Icon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8d3a11c5bf2348d51d4a4c39b66a8918991334d9.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"We'll Be Back",description:"Halo: Reach: Beat the par score on every Halo: Reach level.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6e30f547ee8fa3a3daa8ab0f258d6c41729bdacf.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Floor It!",description:"H3: ODST: Beat the par time on Uplift Reserve.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/99ecdce43982f9fb0c609d95c42f0b0cead8e966.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Countdown",description:"Halo 4: Beat the par time on Midnight.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3e993c28ce1ac5b5e6f6508d7fe1fcc14bcad828.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Orbital Skull",description:"Halo 3: Find the hidden Skull on the Orbital multiplayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ca4f2a75d5cb22829d222b6f7bbf77601596fa28.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Assembly Skull",description:"Halo 3: Find the hidden Skull on the Assembly multiplayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8ab46600953112984be77c5bf6b2fead0ac74aea.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scattered",description:"Halo 4: Complete all chapters in Spartan Ops Episode 6.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/73b0cd93f5b52ec76a6f406f96feaa9e9d06cc74.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Megg",description:"Halo CE: It's a sign.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/73c022353f95782a4961a820e5fbae1d22478594.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Invasion",description:"Halo 4: Complete all chapters in Spartan Ops Episode 7.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/df7072ad5a5f2ab71b8ef0e44a2923dad351b069.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Man on the Moon",description:"Halo 3: He's watching you.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/68b7a826ab9900e070499bf8f9010390f5106a0a.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Scarab Slide",description:"Halo 3: Beat the par time on The Covenant.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/1a8433cd3e1e30b8a95a5a27925a99aeb093e571.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Milk Carton",description:"Halo 3: Find the poster of the missing man.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/efd58f03abf813311f3bc120f90d65a5e33e370c.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Chieftain of the Brutes",description:"Halo 2: Collect the Tartarus toy in Quarantine Zone.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bd1118a3374e8dbb7555bf276edab0287aeeff65.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bombing Run",description:"Halo 2A MP: In Assault, take, plant, and score from the bomb spawn without dying or dropping it.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/326304d267b400f5914d1556588a4894a775e6bd.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"My Work is Done",description:"Halo 2: Collect the Librarian toy in Uprising.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/314c401769410ab250cab52e6a63fbf0c2359fb7.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Citadel Skull",description:"Halo 3: Find the hidden Skull on the Citadel multiplayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/19eabbd5c6b45f4970299cb35fbe574232801fb4.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wraith Hunter",description:"Halo CE: Destroy four Wraith tanks in Assault on the Control Room with the Scorpion tank.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4fc3295c961ee1f881cb239c9f58c30e7e6869eb.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Heretic Skull",description:"Halo 3: Find the hidden Skull on the Heretic multiplayer map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b2abad11e64828150c1f833330c86c5dc397cf01.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"T-Rex",description:"Halo CE: Find the hidden Rex sign on The Maw.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f6ac0e9438072f801660b7d14a971c3cff526920.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Zealot",description:"Halo 2A MP: In Anniversary matchmaking, win 10 games as an Elite.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7e1edbfaf50b3515eaca69ed08a37146515c0dfb.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Shields Up!",description:"Halo 2A MP: On Zenith, personally activate the center energy shield 3 times in one matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6aa7f7e6a77ba5d9e137912dbc8ced1c926ee229.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bill Past Due",description:"H3: ODST: Beat the par time on Tayari Plaza.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6d7db19a577b9ec1a4217e803050ac7e751940ea.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"BLASTacular!",description:"Halo 2A MP: Destroyed all the Halo 2 Anniversary Multiplayer BLAST soda cans.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/57219ee9abe8c3a87dcf8168f3984f86de28093e.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Shut. Down. Everything.",description:"Halo 4: Beat the par time on Shutdown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4b278ac0290dc5a22eca3ae3b17559afee5cbd29.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Why Am I Here?",description:"Halo 2: View this hidden message on the classic Beaver Creek map.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f3741f13eadb4096d50e87aa6e660bc1d0facb4d.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Raging in the Dark",description:"Halo 4: Beat the par time on Forerunner.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2992075a4bccabc528dc2df50e0e100900b7a18f.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Brainpan",description:"Halo 3: Find all the hidden multiplayer Skulls.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/180885751aed73202853e03430ed6f116246d009.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Mythic",description:"Halo 2: Find and claim the Mythic Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ff96e994c58ee91dfed825a4f3255bd15fab3d2d.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Worship Your Thirst!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Shrine.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a25a4e04103131ac605ea046f8dc3f47fc129478.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bloody Thirsty!",description:"Halo 2A MP: Found and destroyed the BLAST soda can on Bloodline.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6df57681f1ca5c4ca77a90a570205fc6746a8133.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Pyrrhic Solution",description:"Halo 2: Collect the Didact toy in The Great Journey.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9bc6fcb08b55be373d7af932daf0e35c85a866a6.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fly, You Fools!",description:"Halo: Reach: Find the hidden Banshees on The Package.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/048b0dfd8abd70e0d1c3aadd18e8c8300c2024d4.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All You Can Eat",description:"Halo CE: Beat the par time on The Maw.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7234ff49449ee9d74c5d5f9ff79a88288e5d187c.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Did You Major in Marine Bio?",description:"Halo: Reach: Encounter the hidden marines on Exodus.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b1318bc96d608737187ea33de44b3c2723d39a47.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fast Fall",description:"Halo: Reach: Beat par time on all Halo: Reach levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/775835157b24e6546e8b91f71e830c1bec0d983c.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: IWHBYD",description:"Halo 2: Find and claim the IWHBYD Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d9779d25c3bee6ff20aa2ba356d7f907616b4a3d.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Black Eye",description:"Halo 2: Find and claim the Black Eye Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e19bbeab0dd6657fd7100affa0fe473ed05d4c86.jpg",percent_achieved:"1.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skulltaker Halo 2: Ghost",description:"Halo 2: Find and claim the Ghost Skull on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6bd87343ccdf639938285d6f907268e897716a5c.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Forza in the Fall",description:"Halo: Reach: Flip the switches to become a Reach Racer!",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a7e8b1808d79cb7e4931641f23467532e45e73a6.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Strong, Silent Type",description:"H3: ODST: Assassinate 3 Brutes in a row on Data Hive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/355e43fcdaf9b3a7c666420512d4b9f0314a253c.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Who Needs Red Flag?",description:"Halo: Reach: Complete three Halo: Reach playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/86756e62a761781b3c72d04541fc71fa0944a133.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"HI BEN",description:"Halo 2: Oh, hi!",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5816ebb0cc9c75dd7dc95ff4d3733909eec3b417.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Exodus",description:"Halo 4: Complete all chapters in Spartan Ops Episode 10.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/901688adb8cc61228d7a6bdc2bf7b2f84654a983.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Key",description:"Halo 4: Complete all chapters in Spartan Ops Episode 9.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9de673a739da3f95a10c7db1e55703a2f6dc7170.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Squid Jackpot!",description:"H3: ODST: Beat the par score on Kikowani Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9d3f2530cc20886bfb2844d47094df04d7363916.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Why So Serious",description:"Halo 2: View the smiling face in the classic multiplayer map Coagulation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5f27e175ddfb9de5f5463184ca639e6d08a8f7b2.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Nice Work Dawg!",description:"Earn a total of 2,500 Assist medals in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3245c9e98352ea404ec01e936bf76b43a706a6d3.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Expendable",description:"Halo 4: Complete all chapters in Spartan Ops Episode 8.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/96049eddf3a7a3a44967a0cd7a2a1d6c8ec87ef6.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Domination",description:"Earn a total of 100 Legendary medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2b529648d9fd7b43c1cd06e0518fb49dfab4663f.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Whistle Stop Tour",description:"Halo CE: Beat the par time on Two Betrayals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7c60dca8f463ee31325875f37cc0fce5be54d13c.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Feet Don't Fail Me Now",description:"H3: ODST: Beat the par time on Kikowani Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f3da3b46f1d7f6ae37eef2d10f634e9c6c606e7a.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Interloper",description:"Halo 4: Beat the par time on Requiem.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2813972fdbf018e63b436ba35886736e488bc0bd.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fast and Low",description:"H3: ODST: Splatter 7 enemies with a Banshee on Kikowani Station.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2b97bbfe4ef4cf09c37db51dae1f46afd5fa8a1e.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Hippo Hero",description:"Halo 3: Who DARED to discard this brave animal?",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/740039864c733b25cd9c32623b708b50b372ed39.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Toybox",description:"Halo 2: Collect all eight Halo toys.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f0f64059c93ad25b1dff18d4e0480c652066ef7a.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sid Graffiti",description:"Halo 2: Spot the Sid graffiti on the walls of Coagulation in classic multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d856523ffdcaae772b4481589a338cbfc128d39d.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Roses vs Violets",description:"Halo 4: Why are you even here?",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/82e912c141df7958b57e7be65eaf712eb90e611d.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Top Gungoose",description:"Halo 2A MP: Get a kill with the Gungoose while airborne.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/408034540635d08c75e461011def02d9058beb7c.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Did Somebody Say...",description:"Halo CE: Beat par time on all Halo: CE levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b10d89a39570f37150d70627dd09e52e55a85e0e.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Force of Will",description:"Halo 2: Beat the par time on Gravemind.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/df506ec509d01b81eb5ed0a79854ba1dee935428.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Regret Nothing",description:"Halo 2: Beat the par time on Regret.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/88391a8c00b2ba8203eeb33a5b3160aaf37157c1.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Speed Demon",description:"Halo 3: Beat the par time on all Halo 3 levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d5e38e548b47ab6ae2ca9ce04747b243c3c385ae.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gimme That",description:"Halo 4: Beat the par time on Reclaimer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8759f094b34ad80abf793011238cd6213777a1a7.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Goose is Loose",description:"Halo 2A MP: Get 25 kills with the Gungoose in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5633c711c6e0d9382db53ed81c2f68ec3cd0dd7d.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Who Needs Them?",description:"Halo 3: On The Ark, complete the level without entering a vehicle on Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c9f02f720c4366a384059c9c0b63c4186f09f5b3.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"10 Minutes Too Early",description:"Halo 2: In The Oracle, find the holo-drone before the Heretic Leader activates it.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b5df9d604e2b1d3bdd3030a46af7ce5640adb220.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Shoot and Scoot",description:"H3: ODST: Complete NMPD HQ without firing the Sniper Rifle on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4e5f713f0cb9c150750eef84e29768c146a1e73c.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Power Play",description:"Halo 2A MP: On Warlord, get 5 active camouflage power ups in a single game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/9bd4101bbe6f37d0927559d903b472e75e9051d4.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Sample Plate",description:"Complete three cross-game playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/925e79473e2fd7c6e5cf21149cf7579a27819cd7.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign","Co-op Campaign"]}),this.TAchievement.$clone({name:"Shook the Hornet's Nest",description:"Halo 2A MP: Get 30 kills with the Hornet in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ff6a942d16d2844ff789defd0b3bfd0b493e9ef0.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Overachiever",description:"Halo CE: Beat the par score on all Halo: CE levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d26478f4ee66840ed232c7bb06b0b308db03e5a4.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Going Nowhere Fast",description:"Halo 2: Beat par time on all Halo 2 levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/18d9d218096b900bd9030cbd84322def1a49e2fd.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Left Behind",description:"Halo: Reach: Achieve a score of 30,000 points on Lone Wolf.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ffece2280e0820f42594620130ea9474a380bc1c.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Lore Master",description:"Activate all terminals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e39b0321b1db40a49af73d8f347532bd6105d4ca.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Aficiando",description:"Halo 3: Complete three Halo 3 playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/07de6a9164ecf9b46e98df81cd8e4308b4b3f593.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pacifist",description:"Halo CE: Finish The Silent Cartographer without shooting, grenades, melee, dying or restarting.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e67f0a2ceedabfd0a7f4a1e4c00cccd1e70fdff9.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Feet First",description:"Halo 4: Complete all Spartan Ops chapters.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/08c2b69ce5001df07bef45c2816d9a049afa8a35.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Like a Broken Record",description:"H3: ODST: Find a legendary hidden music cue.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4e646c970ee04cd0aeb9d979b270fd40d36691b8.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Trophy Collector",description:"Halo 2: Find and claim all Skulls in Halo 2.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/66a2606f979073b0616bbe25c680672f1d7a5a68.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Grand Theft Halo",description:"Halo 2A MP: In one match, steal a total of 5 occupied vehicles from opponents.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f7ba39c0b509cfab4330c028e02e3c82fde04683.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Chol Von's Not Gonna Like This",description:"Halo: Reach: Kill 1000 Skirmishers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8644eac10ebf4163e3937351c3490a4a76c6f689.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Monumental Thirst!",description:"H2A: Found and destroyed the BLAST soda can on Remnant..",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/edba3017c03219883bcf020bd566ced09a89267c.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Keep Your Foot on the Pedrogas",description:"Halo: Reach: Complete all Halo: Reach Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/b417a696ff51ab5d42ec05eff43e07a2732baf27.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Red vs. Blue",description:"Halo 2A MP: Win 10 matches on Bloodline in multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5b2d90f41113179ddd023182e0e97ac956e041be.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Planting A Flag",description:"Earn a total of 250 CTF Mode Specific medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/41e6c6d54e0421b1406e4dc0d06b7ec222170a60.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Vandalized",description:"H3: ODST: Face it.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/c538d75cc4cfca89f5effe20a681bf42254761a6.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Term of Enlistment",description:"Halo 4: Complete all Spartan Ops chapters on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/94a8837afd36c9b551f041f35a558dfc1a595b94.jpg",percent_achieved:"0.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Life Story",description:"Complete the Master Chief Saga playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/65f5c247849cc6eeb2b7b09c4bd207e6c0827466.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Destination Vacation",description:"Halo 2: View one of the seasonal signs on Zanzibar in classic multiplayer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/70646dbdf905d5582df0d63a2b53cc448117fa8b.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"This is my Rifle, This is my Gun",description:"Halo 4: Carry a UNSC weapon all the way through Forerunner on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0808599978ff11f471c1ae6d21541dcdc009d304.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Trifecta",description:"H3: ODST: Complete three Halo 3: ODST playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/868ae7906c5cc4781e6c1d1b49441d14811c7afe.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"That Just Happened",description:"Halo CE: Complete The Library on Heroic or Legendary difficulty without dying.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8a05067862d9fb709ebc17f619458ecb6b819b7a.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Marine Corps Gives Its Regards",description:"H3: ODST: Beat par score on all Halo 3: ODST levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4a1bcd1c02e0ce18f1a6d269194613b5159f6890.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Can't Stop Here, This is Brute Country",description:"H3: ODST: Beat par time on all Halo 3: ODST levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/dcb495afb61bac848ef9095774a5a8d75f5fe7f0.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Leave It Where It Lay",description:"Halo CE: Complete Two Betrayals on Legendary difficulty without picking up a new weapon.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/eda695ca700d20983ab7a2d53ddf508502c28a43.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tying Up Loose Ends",description:"Halo CE: Kill every Elite on the level Keyes on Heroic or Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a66eecd38482baf6b5eb2170c808e4585a06efae.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Excellent Taste",description:"Halo CE: Complete three Halo: CE playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/abd3724f6d47aedbaae93a4687351fdcc8fd581f.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Arcade Owner",description:"Halo 2: Beat the par score on every Halo 2 level.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/58fed73994f6c90c32a1dd39df60d1ee6d799d2f.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Classic",description:"H3: ODST: Finish any level solo on Legendary, with no shots fired or grenades thrown.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/47e5e974e2c140c0a32ed250a310447004cf7b0f.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Starved For Shields",description:"Halo 2: Complete a level with only the Streaking Skull active on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6a1b79ed857c46a89f3ee4d81c967a90bbc34e58.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"What Power Outage?",description:"Halo 4: Complete The Cauldron Base of Spartan Ops without losing a generator on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/349774681ff01a51ba4a43272b81e34df3f574d7.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Throne of Bones",description:"Find and claim all the campaign skulls in Halo:CE, Halo 2, and Halo 3.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/56ca77cc77b13e4a5f33b271bd087c0038223dba.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mortardom",description:"Halo 4: On Reclaimer, use a Wraith to kill at least four enemy Wraiths on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/687d5b7af86f32ca235f3cd4c8cc0227dd38177b.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bros to the Close",description:"Halo 4: Complete Infinity without one preventable Marine death on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4808e24e2de9ab5da6d657194df751fc543babb3.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Connoisseur",description:"Halo 2: Complete three Halo 2 playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7d3e1fb828d98734c269019f316d12c2b9296987.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Easy As One Two Three",description:"Halo 4: Beat the par time on all Halo 4 levels.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/be828b9132045aac39e8beee9524c7911819a126.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Devastating",description:"Halo 3: Complete all Halo 3 Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/39104694ee261b9cbec17b55b02431b0bef8c6be.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Elder Signs",description:"Halo 3: View 2 different sigils on Valhalla.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/54d429c917b09787e115d2d981a4a0f0da3d1d79.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One Final Firefight",description:"Halo: Reach: Achieve a score of 150,000 points on Lone Wolf.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/304480ba3232b0b9f6a7da4e6b4c5fa3bf669d63.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Look Out for the Little Guys",description:"Halo CE: Complete Two Betrayals on Legendary difficulty without killing any Grunts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7a5ac22d93dbdd1af366786b8f29aab7b8d4db17.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Return of Megg",description:"Halo 2: She's not picking up.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/bbeb13df7a714488f903576964aaf7e9385a9a59.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Shiny...",description:"H3: ODST: Pilot a Banshee on Kizingo Boulevard.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2aebfc4aa97975fba6dbe3a73f03c0fc105be8a1.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign"]}),this.TAchievement.$clone({name:"Wetwork",description:"Halo 2A MP: On Shrine in CTF, activate the enemy base waterfall and, before it stops, grab the flag.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2a4b882ba126fa11554b7cbf0ad83914878eb531.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Icarus",description:"Halo 4: Complete all Spartan Ops chapters on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a3ad3d035626f638482c8bed361e1dbea929c8a0.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Catch This",description:"Earn a total of 500 Grenade Kill or Plasma Kill medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e9b9dc27cd7e38a52c9e0ee046ad2b85745915e4.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"No Easy Way Out",description:"Halo 4: Survive Spartan Miller (Ep.5 Ch.1) of Spartan Ops on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4ca81b7d81db9329bf62ac5e65272a388bf7362e.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hazard Pay",description:"Halo 4: Complete all Spartan Ops chapters on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/21c2a4c80370894e077a2dc168db8504a2f54d2d.jpg",percent_achieved:"0.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Airborne",description:"Halo CE: Launch a Warthog for at least 5 seconds and have it splatter an enemy.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/883622f3000697cf239a8f9630c0a32f20642943.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The True King",description:"Earn a total of 250 KOTH Mode Specific medals in matchmade games.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0542f986c53ac41d23e194b32b0a6c7d0812b10c.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Invaders Repelled",description:"Halo 2A MP: In King of the Hill, kill 5 opponents within your controlled hill.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/af401f74646f4c1bc745e0a346356dcac75b0b73.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Annual",description:"Halo 3: Complete Halo on 4-player Legendary co-op, with Iron Skull, and everyone in Ghosts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/871d919681f4b4630ab67c545ebb665185397e4c.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No One Left Behind",description:"Halo 4: Save at least one Marine on Hacksaw (Ep.2 Ch.3) of Spartan Ops on Heroic or Legendary.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0da6429ff27f7d829a692c95d0971a2fad63096c.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Why Do This To Yourself?",description:"Halo: Reach: Complete the Halo: Reach LASO Campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/7d37327859b0ecd8f76427f3bc204fc98c49b002.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Smooth Operator",description:"Halo 4: Complete all Spartan Ops chapters solo on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/a3768340fb2e2a8a0d52a45da6cfdf9f1f52ab86.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Knightbane",description:"Kill 1000 Knights.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/0c1313a24e6dd0bee5fbdbfdfc6a2aeca845ad8b.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mind the Gap",description:"Halo 3: 4 vehicles, 1 gap on Legendary using Cowbell, Catch, Thunderstorm, Mythic, and Tough Luck.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/3d140c2f386c007d228acac9e93012df4be1fa13.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Devotee",description:"Halo 4: Complete three Halo 4 playlists.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4080b0e1b6d5f76536396d54e712e18be42def73.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Safety Not Guaranteed",description:"H3: ODST: Complete a Halo 3: ODST LASO Campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/ecb88aed345b4914eec466cd10f430827740fdd7.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Campaign","Co-op Campaign"]}),this.TAchievement.$clone({name:"Déjà Vu",description:"H3: ODST: Complete Coastal Highway on 4-player Legendary co-op, with Iron, and no 'Hog or Scorpion.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/d97ee378cac6c6045e2ba998721951299028093c.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"A Preference for Pain",description:"Halo 3: Complete the Halo 3 LASO Campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/8e8ad16d5dde190dccee208496fa3f1f6554de0f.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Like a Fine Wine",description:"Halo CE: Complete the Halo: CE LASO Campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/2e3f36a03a5f10eddebb35e9dd7f71ef869b4046.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Goat Roped",description:"Halo CE: Halo CE: Complete all Halo: CE Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/4ed1a869b12ca6babd8c035a071637a481937eb4.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Naked Tyrant",description:"Halo 4: Complete the Halo 4 LASO Campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/e0cf751f85f033c6bf5ec1f70d7b23131f4a4e29.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Back for More",description:"Halo 2: Complete the LASO campaign playlist.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/5c7e1c05b521050e3f834ed9075fce281fcb9a2f.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You're Joking",description:"Halo 4: Complete all Halo 4 Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/6bbd276dc510670aa1da393c9bbc753cd24afba5.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Remove the Bishops From the Board",description:"Kill 1000 Watchers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/cd24ae8a4acaed1e3fc788c704c2957afebe1935.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Monopolized",description:"Halo 2: Complete all Halo 2 Legendary campaign missions in under 3 hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/65df1f75ccebcd20a5a01d04107cfdd6842af0be.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Roadkill Rampage",description:"Halo 2A MP: In Anniversary matchmaking, earn a total of 100 Splatter medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/50181c586fbeac486a91020e32e3ffe09a98b88e.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Rock and Coil Hit Back",description:"Halo 2A MP: In Anniversary matchmaking, earn a total of 100 Environmentalist medals.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/f05a8191b7bb8fca0994596c78fd12dd51e7bbba.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"LASO Master",description:"Complete each individual game specific LASO playlist for every Halo game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/22a15dbe9acef7c583e08286cad62ef4bd197c06.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]})],this.Halo5_Achievements$a$clone=function(t){var i=[];i.length=73;for(var a=0;a<73;a++)i[a]=e.TAchievement.$clone(t[a]);return i},this.Halo5_Achievements=[this.TAchievement.$clone({name:"Your Team is Your Weapon",description:"Command your team of Spartans in Osiris.",image:"assets/halo5.jpg",percent_achieved:"59.65%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Your Style",description:"Change your Spartan's gear in the Spartan Hub.",image:"assets/halo5.jpg",percent_achieved:"30.48%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Raise Your Banner",description:"Change your Emblem in the Spartan Hub.",image:"assets/halo5.jpg",percent_achieved:"40.51%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Make Your Mark",description:"hange your Service Tag in the Spartan Hub.",image:"assets/halo5.jpg",percent_achieved:"24.33%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gamemaster",description:"Create and save a Custom Game.",image:"assets/halo5.jpg",percent_achieved:"3.21%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Benchwarmer",description:"Spectate a game.",image:"assets/halo5.jpg",percent_achieved:"4.91%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cry Havoc",description:"Complete 3 matchmade games of Warzone.",image:"assets/halo5.jpg",percent_achieved:"18.27%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bringing in the Big Guns",description:"Call in a REQ that costs 5 Energy or more.",image:"assets/halo5.jpg",percent_achieved:"20.21%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Go for the Gold",description:"Open a Gold REQ Pack.",image:"assets/halo5.jpg",percent_achieved:"22.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Warlord",description:"Win a match on all three original Warzone maps.",image:"assets/halo5.jpg",percent_achieved:"10.15%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Castle Crasher",description:"Complete 5 matchmade games of Strongholds.",image:"assets/halo5.jpg",percent_achieved:"6.14%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Off to the Races",description:"Complete 5 matchmade games of Breakout.",image:"assets/halo5.jpg",percent_achieved:"7.64%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Flag Monger",description:"Complete 5 matchmade games of Capture the Flag.",image:"assets/halo5.jpg",percent_achieved:"8.53%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Spartan Decimation",description:"Complete 5 matchmade games of Slayer.",image:"assets/halo5.jpg",percent_achieved:"23.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Into the Fire",description:"Complete Mission 1.",image:"assets/halo5.jpg",percent_achieved:"54.41%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Argent Moon",description:"Complete Mission 2.",image:"assets/halo5.jpg",percent_achieved:"44.15%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gravedigger",description:"Find and claim a Skull.",image:"assets/halo5.jpg",percent_achieved:"8.21%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Escape",description:"Complete Mission 6.",image:"assets/halo5.jpg",percent_achieved:"36.59%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Together Again",description:"Complete Mission 7.",image:"assets/halo5.jpg",percent_achieved:"34.42%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reclamation",description:"Complete Mission 13.",image:"assets/halo5.jpg",percent_achieved:"28.35%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A New Dawn",description:"Complete Mission 14.",image:"assets/halo5.jpg",percent_achieved:"27.53%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Legacy",description:"Complete every Mission of the game on Normal difficulty.",image:"assets/halo5.jpg",percent_achieved:"20.53%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Heroes Rise",description:"Complete every Mission of the game on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"5.74%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Forging a Legend",description:"Complete every Mission of the game on Legendary difficulty.",image:"assets/halo5.jpg",percent_achieved:"2.34%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Conspiracy Theory",description:"Find and claim one piece of Intel.",image:"assets/halo5.jpg",percent_achieved:"55%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Top of the Food Chain",description:"Kill a Legendary Boss in Warzone.",image:"assets/halo5.jpg",percent_achieved:"16.52%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hunt the Truth",description:"Find and claim all Intel.",image:"assets/halo5.jpg",percent_achieved:"0.77%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fire Drill",description:"Finish Evacuation within 18:00 without dying on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.67%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gravelord",description:"Find and claim all Skulls.",image:"assets/halo5.jpg",percent_achieved:"0.88%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Enemy of my Enemy",description:"Help the Elite General charge the hill in Osiris on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.34%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I Thought I'd Lost You",description:"Escape the Hunters in the lab and fight them in the hangar in Blue Team.",image:"assets/halo5.jpg",percent_achieved:"1.93%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"On My Mark",description:"Simultaneously assassinate two Elites in Blue Team co-op.",image:"assets/halo5.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Going the Distance",description:"Complete Glassed without entering a vehicle.",image:"assets/halo5.jpg",percent_achieved:"0.95%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Shoot from the Hip",description:"Complete Glassed without any players using Smart-Link.",image:"assets/halo5.jpg",percent_achieved:"1.52%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Waiting on You",description:"Kill an enemy that's had its armor repaired in Unconfirmed.",image:"assets/halo5.jpg",percent_achieved:"34.07%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Maverick",description:"Team up in a vehicle to kill 30 enemies in Unconfirmed co-op.",image:"assets/halo5.jpg",percent_achieved:"0.59%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Savior",description:"Keep 6 miners alive at the elevator in Evacuation on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.54%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Take a Hike",description:"Traverse the canyon without a Phaeton in Reunion on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"1.41%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Witnesses",description:"Destroy the Phantom at the Covenant camp in Reunion on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.38%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No Knock Raid",description:"Destroy 10 walls or floors in Swords of Sanghelios.",image:"assets/halo5.jpg",percent_achieved:"0.81%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Preying Mantis",description:"Complete Swords of Sanghelios co-op with both Mantises on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.49%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Kraken Lackin'",description:"Complete Enemy Lines without destroying a Kraken turret.",image:"assets/halo5.jpg",percent_achieved:"6.71%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Emergency Boarding Procedures",description:"Escape the doomed Kraken by jumping onto a Phaeton piloted by a Spartan.",image:"assets/halo5.jpg",percent_achieved:"0.64%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Death from Above",description:"Kill a Grunt and smash a grate with a Ground Pound in Battle of Sunaion.",image:"assets/halo5.jpg",percent_achieved:"0.57%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Worms Don't Surf",description:"Knock two Hunters into the ocean during the Battle of Sunaion.",image:"assets/halo5.jpg",percent_achieved:"0.32%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tank Still Beats Everything",description:"Finish the 13th mission without losing the Scorpion on Legendary difficulty.",image:"assets/halo5.jpg",percent_achieved:"1.52%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rolling Thunder",description:"Operate four different vehicles at once in Mission 13 on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.62%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Harbinger",description:"Complete The Breaking on Legendary difficulty without the entire fireteam dying.",image:"assets/halo5.jpg",percent_achieved:"0.25%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Prison Break",description:"Simultaneously kill two Wardens in The Breaking on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.29%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Icy Cool",description:"Use a Ground Pound on an exterior power core in Guardians on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.71%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Double Stuff",description:"Simultaneously destroy 2 cores in Guardians on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"0.37%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Lone Wolf",description:"Complete every Mission of the game by yourself on Legendary difficulty.",image:"assets/halo5.jpg",percent_achieved:"1.58%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One for All",description:"Complete any co-op Mission on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All for One",description:"Complete every co-op Mission on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"1.62%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Civil War",description:"Complete Mission 12.",image:"assets/halo5.jpg",percent_achieved:"29.08%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"My Rules",description:"Complete any Mission with 3+ Skulls active on Heroic difficulty.",image:"assets/halo5.jpg",percent_achieved:"1.01%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Valor Recognized",description:"Qualify for a Competitive Skill Rating.",image:"assets/halo5.jpg",percent_achieved:"13.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Glasslands",description:"omplete Mission 3.",image:"assets/halo5.jpg",percent_achieved:"40.85%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Roots of the Earth",description:"Complete Mission 4.",image:"assets/halo5.jpg",percent_achieved:"39.96%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Stolen Gauntlet",description:"Complete Mission 5.",image:"assets/halo5.jpg",percent_achieved:"37.97%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Swords",description:"Complete Mission 8.",image:"assets/halo5.jpg",percent_achieved:"32.33%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Old Bones",description:"Complete Mission 9.",image:"assets/halo5.jpg",percent_achieved:"31.84%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Breakthrough",description:"Complete Mission 10.",image:"assets/halo5.jpg",percent_achieved:"30.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Stormbound",description:"omplete Mission 11.",image:"assets/halo5.jpg",percent_achieved:"30.01%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sentinels",description:"Complete Mission 15.",image:"assets/halo5.jpg",percent_achieved:"26.64%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Drop A Quarter",description:"Complete a mission in Score Attack with at least 10,000 points.",image:"assets/halo5.jpg",percent_achieved:"4.46%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Up For A Challenge",description:"Reach 50,000 points in Score Attack with a Skull multiplier of x2 or higher.",image:"assets/halo5.jpg",percent_achieved:"0.58%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Party Hearty",description:"Complete a mission in Score Attack co-op, with all participants scoring at least 200,000 points.",image:"assets/halo5.jpg",percent_achieved:"0.42%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Hare",description:"Beat the par time of a mission in Score Attack.",image:"assets/halo5.jpg",percent_achieved:"1.79%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"The Tortoise",description:"Complete a mission in Score Attack with at least 500,000 points.",image:"assets/halo5.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Not Your First Rodeo",description:"Successfully complete 5 Warzone Firefight matches.",image:"assets/halo5.jpg",percent_achieved:"7.36%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Tour of Duty",description:"Complete a Warzone Firefight match on 6 unique maps.",image:"assets/halo5.jpg",percent_achieved:"5.82%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dangerous Game",description:"Earn a Mythic Boss Takedown in a Warzone Firefight match.",image:"assets/halo5.jpg",percent_achieved:"10.91%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]})],this.HaloInfinite_Achievements$a$clone=function(t){var i=[];i.length=144;for(var a=0;a<144;a++)i[a]=e.TAchievement.$clone(t[a]);return i},this.HaloInfinite_Achievements=[this.TAchievement.$clone({name:"Clocking In",description:"Complete a Daily Challenge.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/88136bc7244bf35c50dc0779413c7b11953a7032.jpg",percent_achieved:"66.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"We Have a Job For You",description:"Complete a Weekly Challenge.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/88136bc7244bf35c50dc0779413c7b11953a7032.jpg",percent_achieved:"53.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Humble Beginnings",description:"Complete one level in a Battle Pass.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/88136bc7244bf35c50dc0779413c7b11953a7032.jpg",percent_achieved:"47.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"I'm Ready, How 'Bout You?",description:"Change your Spartan's look in the Customize menu.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f9fce869caacedb02e9ef87fa7a0b642ba99552c.jpg",percent_achieved:"47.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Peak Performance",description:"Earn 2,000 score in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"45.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Passion for Fashion",description:"Wear a new armor customization item.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f9fce869caacedb02e9ef87fa7a0b642ba99552c.jpg",percent_achieved:"44.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Which One of Us is the Machine?",description:"Get and equip a new AI.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f9fce869caacedb02e9ef87fa7a0b642ba99552c.jpg",percent_achieved:"36.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reporting for Duty",description:"Change your Spartan Tag.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/2195f8dfeb512d86303c98f0e22520f9d6fdd64e.jpg",percent_achieved:"30.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Brutality",description:"Kill an enemy with melee using a bladed weapon in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"28.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:'"Need a Weapon?"',description:"Try out a new weapon customization item.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f9fce869caacedb02e9ef87fa7a0b642ba99552c.jpg",percent_achieved:"27.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Limited Addition",description:"Complete a Limited Time Challenge.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/88136bc7244bf35c50dc0779413c7b11953a7032.jpg",percent_achieved:"26.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Slaying with Style",description:"Earn a Mythic Medal in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"24.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"You're Up, Rook'",description:"Play a Ranked Match.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d353de98434bb8120d95a836da7c438043dc97f1.jpg",percent_achieved:"23.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Peeker's Disadvantage",description:'"Back Smack" an enemy who is zoomed in with a scoped weapon in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"21.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Running Laps",description:"Capture the flag twice in a matchmade Capture the Flag game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"19.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Customary",description:"Play a custom game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/0751d47f8e30279a1a120d2a1cc3971c2e91f547.jpg",percent_achieved:"18.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Just the Two of Us",description:"Access your Personal AI.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d9403eacdc5cf94a3be41136cd9f0ea5da6f8c69.jpg",percent_achieved:"17.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Kebab",description:"Destroy an enemy vehicle with the Skewer in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"17.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"That Thing on the Left is the Brake",description:"Test drive a new vehicle customization.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f9fce869caacedb02e9ef87fa7a0b642ba99552c.jpg",percent_achieved:"16.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"They See Me Rollin'",description:"Spectate an ally that is driving a Warthog or Razorback in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"15.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Sharpshooter",description:"Complete a Weapon Drill.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/b218ef40e1915265ef7252cbe7d069f36bbfcdcf.jpg",percent_achieved:"15.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Doing Your Part",description:"Complete the Tutorial.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d9403eacdc5cf94a3be41136cd9f0ea5da6f8c69.jpg",percent_achieved:"14.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"All About the Grind",description:"Finished Ranked Placement Matches.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d353de98434bb8120d95a836da7c438043dc97f1.jpg",percent_achieved:"13.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bomb Returned",description:"Repel an enemy grenade with the Repulsor in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"13.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Control Freak",description:"Assist in capturing all zones that lead to a score in a matchmade Total Control game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"13.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Zone Ranger",description:"Secure 5 zones in a matchmade Strongholds game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"12.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Back to the Chopper",description:'Earn "Splatter" with a Brute Chopper in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"First Contact",description:"Lost, and found.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"12.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Getting Strong Now",description:"Launch into Training Mode for the first time.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/559a836b912662697f0a9681ce94dd46ea5aa3c7.jpg",percent_achieved:"12.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Together. Again?",description:"Explore the underbelly of Zeta Halo and retrieve a weapon to turn the tide of this conflict.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"11.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Infinity Down",description:"Access your first Spartan Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"11.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Two Sides to Every Story",description:"Access your first Banished Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"11.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Ascension",description:"Defeat the Banished warlord Tremonius.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"11.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Those Wonderful Toys",description:"Successfully use the Grappleshot 50 times.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"11.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hidden Experience",description:"Locate and secure a Spartan Core.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"11.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Zeta",description:"Fight your way through Outpost Tremonius and step out onto the surface of Zeta Halo.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"11.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Dispatches From the Front",description:"Access your first UNSC Audio Log.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"11.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Multi-class Racer",description:"Drive 4 unique vehicles in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"11.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"A Fellow of Infinite Jest",description:"Kill three enemies with the ball in a matchmade Oddball game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"11.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Working Remote",description:"Pick up a weapon using the Grappleshot in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"11.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Reclaimer",description:"Capture your first Forward Operating Base.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/c4b77f7250a58d69e1a903ba09632ee097a5edd5.jpg",percent_achieved:"11.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Visionary",description:"Unlock the Threat Sensor ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/aa68d8b0fb2d2630dbc1034ba5c52d06b65cfd8d.jpg",percent_achieved:"10.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Outpost Discovery",description:"Complete a Banished outpost.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/668e2d650155b0a67d455caf72797f041a214978.jpg",percent_achieved:"10.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"We're On Our Way",description:"Answer a UNSC distress call.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/542b4c038ebc5d57c308500d15160553ce910bbc.jpg",percent_achieved:"10.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Fallen",description:"Follow the UNSC signal to a Banished stronghold called the Tower. Find the source. Get out alive.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"10.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Money in the Bank",description:"Access your first Mjolnir Armor Locker.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"10.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Headhunter",description:"Eliminate a Banished High-Value Target.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f0f8319957e964396a200fef741fc775e9a907a0.jpg",percent_achieved:"9.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Please Shut Up",description:"Take out a Banished Propaganda Tower.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"9.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Unearthed",description:"Shut down the Banished mining laser and gain access to the Conservatory.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"9.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Grab Some Cover",description:"Unlock the Drop Wall ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/aa68d8b0fb2d2630dbc1034ba5c52d06b65cfd8d.jpg",percent_achieved:"9.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Evasive Maneuvers",description:"Unlock the Thruster ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/aa68d8b0fb2d2630dbc1034ba5c52d06b65cfd8d.jpg",percent_achieved:"8.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Takes One to Make One",description:"Splatter an enemy with a Ghost.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"8.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Natural Formation Location Sensation",description:"Gain access to a loot cave in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"8.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Whip-Riding the Ghost",description:"Use the Grappleshot to board an enemy Ghost.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"8.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hunter. Killer.",description:"Defeat the Hunter pair stationed at the base of the Spire.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"8.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Pelican Down",description:"Shut down the first Spire and stop Zeta's Reformation before it's too late.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/e5ebad6096c08d8926dad3e85faa312554155a67.jpg",percent_achieved:"8.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One Down…",description:"Destroy a Banished anti-aircraft gun.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"8.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Brothers Grim",description:"Take down the Spartan Killers Hyperius and Tovarus.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"8.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sick Burn",description:"Kill an enemy with the Ravager's charged shot in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"8.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Gun Runner",description:"Take down all three Banished AA guns.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"8.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Deadeye",description:"Earn 3 stars in a Weapon Drill.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/4af797da791355c9268813c0ada8ee011066cc2a.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wait, I Can Throw Those?",description:"Throw 50 fusion coils.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"7.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Light the Way",description:"Reach the Beacons, assemble the Sequence, and gain access to the Command Spire.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"7.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"What Will It Take?",description:"Enter the Nexus and learn the secrets of the Spires. Trust is a fragile thing, isn't it?",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"7.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wars with Friends",description:"Bring some rescued UNSC Marines along for the ride into a main mission.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"7.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Hear These Words!",description:"Infiltrate the Command Spire and put an end to the Reformation.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"7.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Together. Again.",description:"A friend is in danger and time is running out. It's time to face your past and save your future.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"7.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"New Kid on the Block",description:'Earn "Perfect" with a VK78 Commando in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Eld Aficionado",description:"Scan a Forerunner Artifact.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/48cf9b20fb12905eba698e53898feccba47620d3.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reckoning",description:"Storm the House of Reckoning.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"6.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Legends",description:"At the end he was just a soldier. Hoping he'd done the right thing.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/e5ebad6096c08d8926dad3e85faa312554155a67.jpg",percent_achieved:"6.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Set a Fire in Your Heart",description:"Complete the main campaign.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/218f421583fe30a2ddd6f8f755d0b5c38a5c52f1.jpg",percent_achieved:"6.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Too Many Goodbyes",description:"Defeat the Harbinger. Confront the truth.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/58f1c8e0f28175a5c42d8cbb89a1409c172a79a6.jpg",percent_achieved:"6.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Reaching Out",description:"Fully upgrade the Grappleshot.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"6.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Getting Defensive",description:"Fully upgrade your Energy Shields.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"6.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Sparring Partners",description:"Change any training mode option.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/559a836b912662697f0a9681ce94dd46ea5aa3c7.jpg",percent_achieved:"6.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Enemies Everywhere!",description:"Mark 3+ enemies at once in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"6.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bare Your Fangs",description:"Complete the main campaign on Normal difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/218f421583fe30a2ddd6f8f755d0b5c38a5c52f1.jpg",percent_achieved:"6.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Get the Popcorn",description:"View a clip in theater.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/2d43232f67bc432046ba1cbb94dbc321a8149eaa.jpg",percent_achieved:"6.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Headstrong",description:"Discover your first hidden Skull.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/48cf9b20fb12905eba698e53898feccba47620d3.jpg",percent_achieved:"5.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Wanna Have a Catch?",description:"Stick 50 enemies with grenades.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"5.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Watt Say You?",description:'Earn "Chain Reaction" with a Shock Rifle in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"5.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Resurgency",description:"Capture all available Forward Operating Bases.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/8c65ba3a38c49ec3da2a853b7f21d8aea370e47f.jpg",percent_achieved:"5.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bunker Buster",description:"Complete all seven Banished outposts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/668e2d650155b0a67d455caf72797f041a214978.jpg",percent_achieved:"4.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"One Shot, Top Mid",description:'Mark an enemy located at "Top Mid" in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"4.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Bloodstars' Bane",description:"Eliminate all 15 Banished High-Value Targets.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/f0f8319957e964396a200fef741fc775e9a907a0.jpg",percent_achieved:"4.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Nosebleed",description:"Check out the best possible view.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"4.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Battle Tested",description:"Complete a Battle Pass.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/88136bc7244bf35c50dc0779413c7b11953a7032.jpg",percent_achieved:"4.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Skyhook Shot",description:'"Grapplejack" an enemy flying vehicle in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"4.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"All-Seeing I",description:"Use the Threat Sensor 50 times.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/1e137624a89489164c551f7f438a0ccdea19f728.jpg",percent_achieved:"3.9%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"No One Left Behind",description:"Answer all UNSC distress calls.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/2bb656c31e61fe1fdcd98c447e14c8c83b0d9e5f.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Do You Even Gift?",description:"Drop a Power Weapon for an ally in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"3.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Thrusters On Full",description:"Fully upgrade the Thruster ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/aa68d8b0fb2d2630dbc1034ba5c52d06b65cfd8d.jpg",percent_achieved:"3.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Big Brother",description:"Fully upgrade the Threat Sensor ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/aa68d8b0fb2d2630dbc1034ba5c52d06b65cfd8d.jpg",percent_achieved:"3.7%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Impervious",description:"Fully upgrade the Drop Wall ability.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/1a726781cee0cabe088ed69864fbfcc74cf8ccfc.jpg",percent_achieved:"3.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Augmented",description:"Earn 3 stars in 5 Tier 3 Weapon Drills.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/4af797da791355c9268813c0ada8ee011066cc2a.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Straight to the Bank",description:"Deposit 5 Power Seeds in a matchmade Stockpile game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Secret Stash",description:"Place an item in the Razorback's storage in a matchmade game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"3.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Fight Hard, Die Well",description:"Complete all main campaign missions on Heroic difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/218f421583fe30a2ddd6f8f755d0b5c38a5c52f1.jpg",percent_achieved:"3.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Run Rabbit, Run",description:"Use the Thruster 50 times.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"2.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Aegis Fate",description:"Deploy the Drop Wall 50 times.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"2.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"MEDIC!",description:"Revive 3 allies in an Attrition/Elimination round in a matchmade or custom game.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"2.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Armory Amore",description:"Access all 34 Mjolnir Armor Lockers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/48cf9b20fb12905eba698e53898feccba47620d3.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Bring Shiela Home Safely",description:'Get the Scorpion all the way to the "House" without it blowing up.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mjolnir Master",description:"Acquire all Spartan Cores.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"1.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Haruspis",description:"Scan all seven Forerunner Artifacts.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Passing the Gas",description:"Kill a Grunt that's been thrown by a Brute.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/5df7b1c563ebad7a1dbf7ffbff298609f3647b77.jpg",percent_achieved:"1.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Make a Little More Noise",description:"Grab a power weapon from the Tutorial armory.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d9403eacdc5cf94a3be41136cd9f0ea5da6f8c69.jpg",percent_achieved:"1.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"A True Test of Legends",description:"Complete all main campaign missions on Legendary difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/218f421583fe30a2ddd6f8f755d0b5c38a5c52f1.jpg",percent_achieved:"1.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Know Your Enemy",description:"Unlock all Banished Audio Logs.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"1.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Catacomb",description:"Discover all hidden Skulls.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Forza Veloce",description:"Complete all 14 main missions in under eight hours.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/97bcdb0b5e759e86f9c85ded21f811c306cca43c.jpg",percent_achieved:"1.1%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Party Bus",description:'Earn "Mount Up" in a Razorback in a matchmade game.',image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/483c8c2701b79a8d86755603bc467acf0053ba5d.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Multiplayer"]}),this.TAchievement.$clone({name:"Off the Air",description:"Destroy 40 Banished Propaganda Towers.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/48cf9b20fb12905eba698e53898feccba47620d3.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Canon Collector",description:"Unlock all UNSC Audio Logs.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Who is Max Valor?",description:"Complete all Valor-awarding activities.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/8c65ba3a38c49ec3da2a853b7f21d8aea370e47f.jpg",percent_achieved:"1.0%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rubicon Protocol",description:"Unlock all Spartan Audio Logs.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/39ad27c42575ba2fca3ce0be117a7f2f9fc7584c.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Greased Lightning",description:"Complete the Movement Yard in under 25 seconds.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/d9403eacdc5cf94a3be41136cd9f0ea5da6f8c69.jpg",percent_achieved:"0.8%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Gatecrasher",description:"Breach the Auditorium in under three minutes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.6%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Headmaster",description:"Complete all main missions on Legendary with all Skulls active.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/218f421583fe30a2ddd6f8f755d0b5c38a5c52f1.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Stick Around",description:"Defeat Tremonius with the Skewer.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"More Than He Bargained For",description:"Defeat War Chief Escharum without ever fully losing your shields.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.5%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Inseparable",description:"In co-op, kill a Hunter and its bond brother within three seconds of each other.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Hunting Party",description:"In co-op, eliminate all Banished High-Value Targets on any difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"First Responders",description:"In co-op, answer all UNSC distress calls on any difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Wardens of Zeta",description:"In co-op, complete all seven Banished outposts on any difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Vintage Fisticuffs",description:"In the Nexus, kill the Hunter pair with melee final blows.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"What's Rightfully Ours",description:"In co-op, capture all Forward Operating Bases on any difficulty.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Turnabout is Fair Play",description:"Kill one Chieftain and use his turret to kill another in the Repository.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.4%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Air Raid",description:"In co-op, kill 100 enemies while all players are riding air vehicles.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Rapid Unscheduled Disassembly",description:"Destroy both Phantoms before they leave Outpost Tremonius.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"It Really Does Beat Everything",description:"Eliminate all enemies at the South Beacon with a Scorpion Tank.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Conservation of Momentum",description:"Complete the Conservatory in less than 15 minutes.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Workplace Safety Violation",description:"Kill an enemy with the Banished mining laser.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Out with a Bang",description:"Kill the Tower commander with a Plasma grenade.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.3%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Spire Stalker",description:"Kill 40 enemies with the Stalker Rifle at the Command Spire.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Cow Catcher",description:"In co-op, splatter 50 enemies while riding in a vehicle with another player.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Gruesome Twosome",description:"In co-op, kill 50 enemies while riding a Mongoose with another player.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Keep It Steady",description:"Kill 5 enemies with a Sniper Rifle from a vehicle. All players aboard vehicle share progress.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Rolling Thunder",description:"Kill 5 enemies with a Gravity Hammer from a vehicle. All players aboard vehicle share progress.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"Mix Things Up",description:"Get at least one kill with every available weapon and grenade on the Banished ship.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/650fa36d47bb581ea3d0b1afc8cdde605885b0f6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Other"]}),this.TAchievement.$clone({name:"You, Me, Same Page",description:"In co-op, destroy all cooling towers at the Dig Site within 60 seconds of each other.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Controlled Demolition",description:"In co-op, destroy four Fuel Silos within five seconds at either Ransom Keep or the Forge of Teash.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]}),this.TAchievement.$clone({name:"Wolves at the Doors",description:"In co-op, lower all three gates within 15 seconds of each other at Riven Gate.",image:"https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/1240440/42457affcc2873204cd085e38acec6113af0dca6.jpg",percent_achieved:"0.2%",Gamerscore:-1,Guide_Description:"",Guide_Video:[],Filter:["Co-op Campaign"]})]})),rtl.module("uAchievements",["System","SysUtils","Classes","JS","Web","WEBLib.Graphics","WEBLib.Controls","WEBLib.Forms","WEBLib.Dialogs","WEBLib.ExtCtrls","WEBLib.StdCtrls","WEBLib.StdCtrls","WEBLib.Controls","WEBLib.ComCtrls","WEBLib.REST","WEBLib.WebTools","StrUtils","Data_Achievements","uColors"],(function(){"use strict";rtl.createClass(this,"TFrame_Achievements",pas["WEBLib.Forms"].TFrame,(function(){this.$init=function(){pas["WEBLib.Forms"].TFrame.$init.call(this),this.layAchievementsContainer=null,this.layAchievementsGrid=null,this.layAchievementsGridLeft=null,this.layAchievements=null,this.layAchievement0=null,this.imgAchievement0=null,this.layAchievementText0=null,this.lblAchievementPercent0=null,this.lblAchievementDescription0=null,this.lblAchievementName0=null,this.lblAchievementUnlocked0=null,this.layGame=null,this.imgGameLogo=null,this.lblGameName=null,this.layAchievementsEarned=null,this.pbAchievementsEarned=null,this.WebGridPanel1=null,this.lblAchievementsEarned=null,this.lblAchievementProgressPercent=null,this.edtCompare=null,this.btnCompare=null,this.edtSearch=null,this.btnSearch=null,this.lblSearch=null,this.WebLabel8=null,this.cbMultiplayer=null,this.cbCoopCampaign=null,this.cbCampaign=null,this.WebLabel10=null,this.layAchievementsGridRight=null,this.GetAchievementsHaloInfinite=null,this.cbOther=null,this.layAchievementGuide=null,this.WebPanel1=null,this.WebLabel1=null,this.lblAchievementGuideDescription=null,this.AchievementGuideVideo=null,this.btnAchievementGuideAll=null,this.lblAchievementGuideAll=null,this.btnAchievementGuideName=null,this.lblAchievementGuideName=null,this.imgAchievementImage=null,this.PageCreated=!1},this.$final=function(){this.layAchievementsContainer=void 0,this.layAchievementsGrid=void 0,this.layAchievementsGridLeft=void 0,this.layAchievements=void 0,this.layAchievement0=void 0,this.imgAchievement0=void 0,this.layAchievementText0=void 0,this.lblAchievementPercent0=void 0,this.lblAchievementDescription0=void 0,this.lblAchievementName0=void 0,this.lblAchievementUnlocked0=void 0,this.layGame=void 0,this.imgGameLogo=void 0,this.lblGameName=void 0,this.layAchievementsEarned=void 0,this.pbAchievementsEarned=void 0,this.WebGridPanel1=void 0,this.lblAchievementsEarned=void 0,this.lblAchievementProgressPercent=void 0,this.edtCompare=void 0,this.btnCompare=void 0,this.edtSearch=void 0,this.btnSearch=void 0,this.lblSearch=void 0,this.WebLabel8=void 0,this.cbMultiplayer=void 0,this.cbCoopCampaign=void 0,this.cbCampaign=void 0,this.WebLabel10=void 0,this.layAchievementsGridRight=void 0,this.GetAchievementsHaloInfinite=void 0,this.cbOther=void 0,this.layAchievementGuide=void 0,this.WebPanel1=void 0,this.WebLabel1=void 0,this.lblAchievementGuideDescription=void 0,this.AchievementGuideVideo=void 0,this.btnAchievementGuideAll=void 0,this.lblAchievementGuideAll=void 0,this.btnAchievementGuideName=void 0,this.lblAchievementGuideName=void 0,this.imgAchievementImage=void 0,pas["WEBLib.Forms"].TFrame.$final.call(this)},this.WebFrameResize=function(e){!1===this.PageCreated&&this.StylePage(),this.layAchievementsGrid.FColumnCollection.Clear(),this.layAchievementsGrid.FRowCollection.Clear(),this.layAchievementsContainer.GetWidth()>1e3?(this.layAchievementsGrid.FColumnCollection.Add$1(),this.layAchievementsGrid.FColumnCollection.GetItem$1(0).SetValue(30),this.layAchievementsGrid.FColumnCollection.Add$1(),this.layAchievementsGrid.FColumnCollection.GetItem$1(1).SetSizeStyle(2),this.layAchievementsGrid.FRowCollection.Add$1()):(this.layAchievementsGrid.FColumnCollection.Add$1(),this.layAchievementsGrid.FRowCollection.Add$1(),this.layAchievementsGrid.FRowCollection.GetItem$1(0).SetSizeStyle(1),this.layAchievementsGrid.FRowCollection.GetItem$1(0).SetValue(this.cbOther.GetTop()+this.cbOther.GetHeight()+this.cbOther.FMargins.FBottom),this.layAchievementsGrid.FRowCollection.Add$1(),this.layAchievementsGrid.FRowCollection.GetItem$1(1).SetSizeStyle(2))},this.WebButton1Click=function(e){},this.ButtonMouseEnter=function(e){e.SetColor(pas.uColors.MakeColorDarker(14120960))},this.ButtonMouseLeave=function(e){e.SetColor(14120960)},this.btnSearchClick=function(e){fetch("https://shaunroselt.com/api.php").then(e=>{if(!e.ok)throw new Error("Network response was not ok");return e.text()}).then(e=>{console.log("Received data:",e)}).catch(e=>{console.error("Error fetching data:",e)})},this.FilterChange=function(e){this.LoadAchievementsHTML()},this.btnAchievementGuideAllClick=function(e){this.layAchievementGuide.SetVisible(!1),this.layAchievementsGrid.SetVisible(!0),this.layAchievementsGrid.GetElementHandle().getElementsByTagName("table").item(0).style.setProperty("background-color","transparent")},this.LinkMouseEnter=function(e){e.SetColor(14120960)},this.LinkMouseLeave=function(e){e.SetColor(-1)},this.StylePage=function(){this.PageCreated=!0,this.layAchievementsContainer.GetElementHandle().style.setProperty("border-radius","5px"),this.layAchievementsContainer.GetElementHandle().style.setProperty("background-color","rgba(0, 0, 0, .7)"),this.layAchievementsContainer.GetElementHandle().style.setProperty("backdrop-filter","blur(8px)"),this.layAchievement0.GetElementHandle().style.setProperty("border-radius","5px"),this.layAchievementsEarned.GetElementHandle().style.setProperty("border-radius","5px"),this.edtSearch.GetElementHandle().style.setProperty("border-radius","5px"),this.edtSearch.GetElementHandle().style.setProperty("border-width","0"),this.btnSearch.GetElementHandle().style.setProperty("border-radius","5px"),this.btnSearch.GetElementHandle().style.setProperty("border-width","0"),this.edtCompare.GetElementHandle().style.setProperty("border-radius","5px"),this.edtCompare.GetElementHandle().style.setProperty("border-width","0"),this.btnCompare.GetElementHandle().style.setProperty("border-radius","5px"),this.btnCompare.GetElementHandle().style.setProperty("border-width","0"),this.btnAchievementGuideAll.GetElementHandle().style.setProperty("border-radius","5px"),this.btnAchievementGuideName.GetElementHandle().style.setProperty("border-radius","5px")},this.SetContent=function(){var e;this.btnAchievementGuideAllClick(null),this.lblSearch.SetVisible(!1),this.edtSearch.SetVisible(!1),this.btnSearch.SetVisible(!1),this.edtCompare.SetVisible(!1),this.btnCompare.SetVisible(!1),this.LoadAchievementsHTML(),"halomcc"===(e=pas.SysUtils.TStringHelper.ToLower.call({a:pas.SysUtils.TStringHelper.Trim.call({a:pas["WEBLib.WebTools"].GetQueryParam("game"),get:function(){return this.a},set:function(e){this.a=e}}),get:function(){return this.a},set:function(e){this.a=e}}))&&(this.imgGameLogo.SetURL("assets/halo-mcc.png"),this.lblGameName.SetCaption("Halo: The Master Chief Collection")),"haloreach"===e&&(this.imgGameLogo.SetURL("assets/halo-reach.png"),this.lblGameName.SetCaption("Halo: Reach")),"haloce"===e&&(this.imgGameLogo.SetURL("assets/halo-ce.png"),this.lblGameName.SetCaption("Halo: Combat Evolved")),"halo2"===e&&(this.imgGameLogo.SetURL("assets/halo-2.png"),this.lblGameName.SetCaption("Halo 2")),"halo3"===e&&(this.imgGameLogo.SetURL("assets/halo-3.png"),this.lblGameName.SetCaption("Halo 3")),"halo3odst"===e&&(this.imgGameLogo.SetURL("assets/halo-3-odst.png"),this.lblGameName.SetCaption("Halo 3: ODST")),"halo4"===e&&(this.imgGameLogo.SetURL("assets/halo-4.png"),this.lblGameName.SetCaption("Halo 4")),"halo5"===e&&(this.imgGameLogo.SetURL("assets/halo-5.png"),this.lblGameName.SetCaption("Halo 5: Guardians")),"haloinfinite"===e&&(this.imgGameLogo.SetURL("assets/halo-infinite.png"),this.lblGameName.SetCaption("Halo Infinite"))},this.LoadAchievementsHTML=function(){var e,t=pas.Data_Achievements.TAchievement.$new(),i=0,a=0,n="",s="",o=0,r="",l=!1,h="",c=null;this.layAchievement0.SetVisible(!1),window.console.log("LoadAchievements"),this.layAchievements.GetElementHandle().innerHTML="","halomcc"!==(e=pas.SysUtils.TStringHelper.ToLower.call({a:pas.SysUtils.TStringHelper.Trim.call({a:pas["WEBLib.WebTools"].GetQueryParam("game"),get:function(){return this.a},set:function(e){this.a=e}}),get:function(){return this.a},set:function(e){this.a=e}}))&&"haloreach"!==e&&"haloce"!==e&&"halo2"!==e&&"halo3"!==e&&"halo3odst"!==e&&"halo4"!==e||(o=700),"haloinfinite"===e&&(o=144),"halo5"===e&&(o=73),r="Unlocked Feb 18, 2024, 7:25 PM",s="",a=0;for(var d=1,m=o;d<=m;d++)i=d,l=!0,n='
\r\n Halo Achievement - ${AchievementName} (${AchievementDescription})\r\n
\r\n
\r\n

${AchievementName}

\r\n

${AchievementDescription}

\r\n
${AchievementPercent} of players have this achievement
\r\n
\r\n
${AchievementUnlocked}
\r\n
\r\n
',"halomcc"!==e&&"haloreach"!==e&&"haloce"!==e&&"halo2"!==e&&"halo3"!==e&&"halo3odst"!==e&&"halo4"!==e||t.$assign(pas.Data_Achievements.HaloMCC_Achievements[i-1]),"haloinfinite"===e&&t.$assign(pas.Data_Achievements.HaloInfinite_Achievements[i-1]),"halo5"===e&&t.$assign(pas.Data_Achievements.Halo5_Achievements[i-1]),"haloreach"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo: reach")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo: reach")),"haloce"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo ce")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo ce")),"halo2"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 2")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 2")),"halo3"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 3")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 3")),"halo3odst"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"h3: odst")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"h3: odst")),"halo4"===e&&(l=pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.name},set:function(e){this.p.name=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 4")||pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({p:t,get:function(){return this.p.description},set:function(e){this.p.description=e}}),get:function(){return this.a},set:function(e){this.a=e}},"halo 4")),l&&(l=!1,this.cbCampaign.GetChecked()&&pas.StrUtils.MatchText("Campaign",t.Filter)&&(l=!0),this.cbCoopCampaign.GetChecked()&&pas.StrUtils.MatchText("Co-op Campaign",t.Filter)&&(l=!0),this.cbMultiplayer.GetChecked()&&pas.StrUtils.MatchText("Multiplayer",t.Filter)&&(l=!0),this.cbOther.GetChecked()&&pas.StrUtils.MatchText("Other",t.Filter)&&(l=!0)),l&&(r="",h="",(""!==pas.SysUtils.TStringHelper.Trim.call({p:t,get:function(){return this.p.Guide_Description},set:function(e){this.p.Guide_Description=e}})||rtl.length(t.Guide_Video)>0)&&(h="cursor:pointer;"),s+=pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({a:pas.SysUtils.TStringHelper.Replace$3.call({get:function(){return n},set:function(e){n=e}},"${AchievementImage}",t.image,rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${AchievementName}",t.name,rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${AchievementDescription}",t.description,rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${AchievementPercent}",t.percent_achieved,rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${AchievementUnlocked}",r,rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${AchievementID}",pas.SysUtils.TUInt64Helper.ToString$1.call({get:function(){return i},set:function(e){i=e}}),rtl.createSet(0)),get:function(){return this.a},set:function(e){this.a=e}},"${CursorHand}",h,rtl.createSet(0)),a+=1),s=pas.SysUtils.TStringHelper.Replace$3.call({get:function(){return s},set:function(e){s=e}},"${AchievementComplete}","",rtl.createSet(0));this.lblAchievementsEarned.SetCaption("0 of "+pas.SysUtils.TUInt64Helper.ToString$1.call({get:function(){return a},set:function(e){a=e}})+" ACHIEVEMENTS EARNED"),this.layAchievements.GetElementHandle().innerHTML=this.layAchievements.GetElementHandle().innerHTML+s,this.lblAchievementsEarned.SetCaption(pas.SysUtils.TUInt64Helper.ToString$1.call({get:function(){return a},set:function(e){a=e}})+" ACHIEVEMENTS"),this.pbAchievementsEarned.SetVisible(!1),this.lblAchievementProgressPercent.SetVisible(!1);for(var p=0,u=(c=document.getElementsByClassName("ElementGuideClick")).length-1;p<=u;p++)i=p,c.item(i).addEventListener("click",rtl.createSafeCallback(this,"LoadAchievementGuide"))},this.LoadAchievementGuide=function(e){var t="",i=pas.Data_Achievements.TAchievement.$new(),a=0;pas.SysUtils.TStringHelper.Contains.call({a:pas.SysUtils.TStringHelper.ToLower.call({a:e.target.getAttribute("style"),get:function(){return this.a},set:function(e){this.a=e}}),get:function(){return this.a},set:function(e){this.a=e}},"cursor:pointer;")&&(this.layAchievementGuide.SetVisible(!0),this.layAchievementsGrid.SetVisible(!1),a=pas.SysUtils.TStringHelper.ToInteger$1.call({a:e.target.getAttribute("data-id"),get:function(){return this.a},set:function(e){this.a=e}}),"halomcc"!==(t=pas.SysUtils.TStringHelper.ToLower.call({a:pas.SysUtils.TStringHelper.Trim.call({a:pas["WEBLib.WebTools"].GetQueryParam("game"),get:function(){return this.a},set:function(e){this.a=e}}),get:function(){return this.a},set:function(e){this.a=e}}))&&"haloreach"!==t&&"haloce"!==t&&"halo2"!==t&&"halo3"!==t&&"halo3odst"!==t&&"halo4"!==t||i.$assign(pas.Data_Achievements.HaloMCC_Achievements[a-1]),"haloinfinite"===t&&i.$assign(pas.Data_Achievements.HaloInfinite_Achievements[a-1]),"halo5"===t&&i.$assign(pas.Data_Achievements.Halo5_Achievements[a-1]),this.imgAchievementImage.SetURL(i.image),this.lblAchievementGuideName.SetCaption(i.name),this.btnAchievementGuideName.SetWidth(this.imgAchievementImage.GetWidth()+this.imgAchievementImage.FMargins.FLeft+this.imgAchievementImage.FMargins.FRight+this.lblAchievementGuideName.GetWidth()+this.lblAchievementGuideName.FMargins.FLeft+this.lblAchievementGuideName.FMargins.FRight),this.lblAchievementGuideDescription.SetCaption(i.Guide_Description),window.dispatchEvent(new Event("resize")),this.AchievementGuideVideo.FHTML.SetTextStr(''))},this.LoadDFMValues=function(){pas["WEBLib.Forms"].TCustomFrame.LoadDFMValues.call(this),this.layAchievementsContainer=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.layAchievementGuide=pas["WEBLib.ExtCtrls"].TScrollBox.$create("Create$1",[this]),this.lblAchievementGuideDescription=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.WebPanel1=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.WebLabel1=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.btnAchievementGuideAll=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblAchievementGuideAll=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.btnAchievementGuideName=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblAchievementGuideName=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.imgAchievementImage=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.AchievementGuideVideo=pas["WEBLib.ExtCtrls"].THTMLContainer.$create("Create$1",[this]),this.layAchievementsGrid=pas["WEBLib.ExtCtrls"].TGridPanel.$create("Create$1",[this]),this.layAchievementsGridLeft=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblSearch=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.WebLabel8=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.edtSearch=pas["WEBLib.StdCtrls"].TEdit.$create("Create$1",[this]),this.btnSearch=pas["WEBLib.StdCtrls"].TButton.$create("Create$1",[this]),this.cbMultiplayer=pas["WEBLib.StdCtrls"].TCheckBox.$create("Create$1",[this]),this.cbCoopCampaign=pas["WEBLib.StdCtrls"].TCheckBox.$create("Create$1",[this]),this.cbCampaign=pas["WEBLib.StdCtrls"].TCheckBox.$create("Create$1",[this]),this.cbOther=pas["WEBLib.StdCtrls"].TCheckBox.$create("Create$1",[this]),this.layAchievementsGridRight=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.WebLabel10=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.layAchievements=pas["WEBLib.ExtCtrls"].TScrollBox.$create("Create$1",[this]),this.layAchievement0=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.imgAchievement0=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.lblAchievementUnlocked0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.layAchievementText0=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.lblAchievementPercent0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblAchievementDescription0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblAchievementName0=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.layGame=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.imgGameLogo=pas["WEBLib.ExtCtrls"].TImageControl.$create("Create$1",[this]),this.lblGameName=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.edtCompare=pas["WEBLib.StdCtrls"].TEdit.$create("Create$1",[this]),this.btnCompare=pas["WEBLib.StdCtrls"].TButton.$create("Create$1",[this]),this.layAchievementsEarned=pas["WEBLib.ExtCtrls"].TPanel.$create("Create$1",[this]),this.pbAchievementsEarned=pas["WEBLib.ComCtrls"].TProgressBar.$create("Create$1",[this]),this.WebGridPanel1=pas["WEBLib.ExtCtrls"].TGridPanel.$create("Create$1",[this]),this.lblAchievementsEarned=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.lblAchievementProgressPercent=pas["WEBLib.StdCtrls"].TLabel.$create("Create$1",[this]),this.GetAchievementsHaloInfinite=pas["WEBLib.REST"].THttpRequest.$create("Create$1",[this]),this.layAchievementsContainer.BeforeLoadDFMValues(),this.layAchievementGuide.BeforeLoadDFMValues(),this.lblAchievementGuideDescription.BeforeLoadDFMValues(),this.WebPanel1.BeforeLoadDFMValues(),this.WebLabel1.BeforeLoadDFMValues(),this.btnAchievementGuideAll.BeforeLoadDFMValues(),this.lblAchievementGuideAll.BeforeLoadDFMValues(),this.btnAchievementGuideName.BeforeLoadDFMValues(),this.lblAchievementGuideName.BeforeLoadDFMValues(),this.imgAchievementImage.BeforeLoadDFMValues(),this.AchievementGuideVideo.BeforeLoadDFMValues(),this.layAchievementsGrid.BeforeLoadDFMValues(),this.layAchievementsGridLeft.BeforeLoadDFMValues(),this.lblSearch.BeforeLoadDFMValues(),this.WebLabel8.BeforeLoadDFMValues(),this.edtSearch.BeforeLoadDFMValues(),this.btnSearch.BeforeLoadDFMValues(),this.cbMultiplayer.BeforeLoadDFMValues(),this.cbCoopCampaign.BeforeLoadDFMValues(),this.cbCampaign.BeforeLoadDFMValues(),this.cbOther.BeforeLoadDFMValues(),this.layAchievementsGridRight.BeforeLoadDFMValues(),this.WebLabel10.BeforeLoadDFMValues(),this.layAchievements.BeforeLoadDFMValues(),this.layAchievement0.BeforeLoadDFMValues(),this.imgAchievement0.BeforeLoadDFMValues(),this.lblAchievementUnlocked0.BeforeLoadDFMValues(),this.layAchievementText0.BeforeLoadDFMValues(),this.lblAchievementPercent0.BeforeLoadDFMValues(),this.lblAchievementDescription0.BeforeLoadDFMValues(),this.lblAchievementName0.BeforeLoadDFMValues(),this.layGame.BeforeLoadDFMValues(),this.imgGameLogo.BeforeLoadDFMValues(),this.lblGameName.BeforeLoadDFMValues(),this.edtCompare.BeforeLoadDFMValues(),this.btnCompare.BeforeLoadDFMValues(),this.layAchievementsEarned.BeforeLoadDFMValues(),this.pbAchievementsEarned.BeforeLoadDFMValues(),this.WebGridPanel1.BeforeLoadDFMValues(),this.lblAchievementsEarned.BeforeLoadDFMValues(),this.lblAchievementProgressPercent.BeforeLoadDFMValues(),this.GetAchievementsHaloInfinite.BeforeLoadDFMValues();try{this.SetName("Frame_Achievements"),this.SetLeft(0),this.SetTop(0),this.SetWidth(1610),this.SetHeight(1059),this.SetTabOrder(0),this.SetEvent(this,"OnResize","WebFrameResize"),this.layAchievementsContainer.SetParentComponent(this),this.layAchievementsContainer.SetName("layAchievementsContainer"),this.layAchievementsContainer.SetAlignWithMargins(!0),this.layAchievementsContainer.SetLeft(20),this.layAchievementsContainer.SetTop(20),this.layAchievementsContainer.SetWidth(1570),this.layAchievementsContainer.SetHeight(1019),this.layAchievementsContainer.FMargins.SetLeft(20),this.layAchievementsContainer.FMargins.SetTop(20),this.layAchievementsContainer.FMargins.SetRight(20),this.layAchievementsContainer.FMargins.SetBottom(20),this.layAchievementsContainer.FCenter.SetHorizontal(!0),this.layAchievementsContainer.SetAlign(5),this.layAchievementsContainer.SetBorderColor(16777215),this.layAchievementsContainer.SetChildOrderEx(1),this.layAchievementsContainer.SetColor(0),this.layAchievementGuide.SetParentComponent(this.layAchievementsContainer),this.layAchievementGuide.SetName("layAchievementGuide"),this.layAchievementGuide.SetLeft(0),this.layAchievementGuide.SetTop(178),this.layAchievementGuide.SetWidth(1570),this.layAchievementGuide.SetHeight(841),this.layAchievementGuide.SetAlign(5),this.layAchievementGuide.SetBorderStyle(0),this.layAchievementGuide.SetChildOrderEx(3),this.layAchievementGuide.SetColor(-1),this.layAchievementGuide.SetScrollBars(2),this.layAchievementGuide.SetVisible(!1),this.lblAchievementGuideDescription.SetParentComponent(this.layAchievementGuide),this.lblAchievementGuideDescription.SetName("lblAchievementGuideDescription"),this.lblAchievementGuideDescription.SetAlignWithMargins(!0),this.lblAchievementGuideDescription.SetLeft(20),this.lblAchievementGuideDescription.SetTop(74),this.lblAchievementGuideDescription.SetWidth(1530),this.lblAchievementGuideDescription.SetHeight(25),this.lblAchievementGuideDescription.FMargins.SetLeft(20),this.lblAchievementGuideDescription.FMargins.SetTop(10),this.lblAchievementGuideDescription.FMargins.SetRight(20),this.lblAchievementGuideDescription.FMargins.SetBottom(0),this.lblAchievementGuideDescription.SetAlign(1),this.lblAchievementGuideDescription.SetCaption(""),this.lblAchievementGuideDescription.FFont.FCharset=1,this.lblAchievementGuideDescription.FFont.SetColor(16777215),this.lblAchievementGuideDescription.FFont.SetHeight(-19),this.lblAchievementGuideDescription.FFont.SetName("Segoe UI"),this.lblAchievementGuideDescription.FFont.SetStyle({}),this.lblAchievementGuideDescription.SetHeightPercent(100),this.lblAchievementGuideDescription.SetLayout(1),this.lblAchievementGuideDescription.SetParentFont(!1),this.lblAchievementGuideDescription.FWordWrap=!0,this.lblAchievementGuideDescription.SetWidthPercent(100),this.WebPanel1.SetParentComponent(this.layAchievementGuide),this.WebPanel1.SetName("WebPanel1"),this.WebPanel1.SetLeft(0),this.WebPanel1.SetTop(0),this.WebPanel1.SetWidth(1570),this.WebPanel1.SetHeight(64),this.WebPanel1.SetAlign(1),this.WebPanel1.SetBorderStyle(0),this.WebPanel1.SetColor(-1),this.WebLabel1.SetParentComponent(this.WebPanel1),this.WebLabel1.SetName("WebLabel1"),this.WebLabel1.SetAlignWithMargins(!0),this.WebLabel1.SetLeft(199),this.WebLabel1.SetTop(5),this.WebLabel1.SetWidth(13),this.WebLabel1.SetHeight(54),this.WebLabel1.FMargins.SetLeft(15),this.WebLabel1.FMargins.SetTop(5),this.WebLabel1.FMargins.SetRight(0),this.WebLabel1.FMargins.SetBottom(5),this.WebLabel1.SetAlign(3),this.WebLabel1.SetCaption(">"),this.WebLabel1.FFont.FCharset=1,this.WebLabel1.FFont.SetColor(16777215),this.WebLabel1.FFont.SetHeight(-19),this.WebLabel1.FFont.SetName("Segoe UI"),this.WebLabel1.FFont.SetStyle({}),this.WebLabel1.SetHeightPercent(100),this.WebLabel1.SetLayout(1),this.WebLabel1.SetParentFont(!1),this.WebLabel1.SetWidthPercent(100),this.btnAchievementGuideAll.SetParentComponent(this.WebPanel1),this.btnAchievementGuideAll.SetName("btnAchievementGuideAll"),this.btnAchievementGuideAll.SetAlignWithMargins(!0),this.btnAchievementGuideAll.SetLeft(20),this.btnAchievementGuideAll.SetTop(16),this.btnAchievementGuideAll.SetWidth(164),this.btnAchievementGuideAll.SetHeight(32),this.btnAchievementGuideAll.SetControlCursor(21),this.btnAchievementGuideAll.FMargins.SetLeft(20),this.btnAchievementGuideAll.FMargins.SetTop(16),this.btnAchievementGuideAll.FMargins.SetRight(0),this.btnAchievementGuideAll.FMargins.SetBottom(16),this.btnAchievementGuideAll.SetAlign(3),this.btnAchievementGuideAll.SetBorderStyle(0),this.btnAchievementGuideAll.SetChildOrderEx(3),this.btnAchievementGuideAll.SetColor(-1),this.btnAchievementGuideAll.FFont.FCharset=1,this.btnAchievementGuideAll.FFont.SetColor(0),this.btnAchievementGuideAll.FFont.SetHeight(-21),this.btnAchievementGuideAll.FFont.SetName("Segoe UI"),this.btnAchievementGuideAll.FFont.SetStyle({}),this.btnAchievementGuideAll.SetParentFont(!1),this.btnAchievementGuideAll.SetShowCaption(!1),this.SetEvent$1(this.btnAchievementGuideAll,this,"OnClick","btnAchievementGuideAllClick"),this.SetEvent$1(this.btnAchievementGuideAll,this,"OnMouseEnter","LinkMouseEnter"),this.SetEvent$1(this.btnAchievementGuideAll,this,"OnMouseLeave","LinkMouseLeave"),this.lblAchievementGuideAll.SetParentComponent(this.btnAchievementGuideAll),this.lblAchievementGuideAll.SetName("lblAchievementGuideAll"),this.lblAchievementGuideAll.SetAlignWithMargins(!0),this.lblAchievementGuideAll.SetLeft(10),this.lblAchievementGuideAll.SetTop(0),this.lblAchievementGuideAll.SetWidth(144),this.lblAchievementGuideAll.SetHeight(32),this.lblAchievementGuideAll.SetControlCursor(21),this.lblAchievementGuideAll.FMargins.SetLeft(10),this.lblAchievementGuideAll.FMargins.SetTop(0),this.lblAchievementGuideAll.FMargins.SetRight(10),this.lblAchievementGuideAll.FMargins.SetBottom(0),this.lblAchievementGuideAll.SetAlign(3),this.lblAchievementGuideAll.SetCaption("All Achievements"),this.lblAchievementGuideAll.FFont.FCharset=1,this.lblAchievementGuideAll.FFont.SetColor(16777215),this.lblAchievementGuideAll.FFont.SetHeight(-19),this.lblAchievementGuideAll.FFont.SetName("Segoe UI"),this.lblAchievementGuideAll.FFont.SetStyle({}),this.lblAchievementGuideAll.SetHeightPercent(100),this.lblAchievementGuideAll.SetLayout(1),this.lblAchievementGuideAll.SetParentFont(!1),this.lblAchievementGuideAll.SetWidthPercent(100),this.SetEvent$1(this.lblAchievementGuideAll,this,"OnClick","btnAchievementGuideAllClick"),this.SetEvent$1(this.lblAchievementGuideAll,this,"OnMouseLeave","LinkMouseLeave"),this.btnAchievementGuideName.SetParentComponent(this.WebPanel1),this.btnAchievementGuideName.SetName("btnAchievementGuideName"),this.btnAchievementGuideName.SetAlignWithMargins(!0),this.btnAchievementGuideName.SetLeft(227),this.btnAchievementGuideName.SetTop(16),this.btnAchievementGuideName.SetWidth(262),this.btnAchievementGuideName.SetHeight(32),this.btnAchievementGuideName.FMargins.SetLeft(15),this.btnAchievementGuideName.FMargins.SetTop(16),this.btnAchievementGuideName.FMargins.SetRight(0),this.btnAchievementGuideName.FMargins.SetBottom(16),this.btnAchievementGuideName.SetAlign(3),this.btnAchievementGuideName.SetBorderStyle(0),this.btnAchievementGuideName.SetChildOrderEx(3),this.btnAchievementGuideName.SetColor(-1),this.btnAchievementGuideName.FFont.FCharset=1,this.btnAchievementGuideName.FFont.SetColor(0),this.btnAchievementGuideName.FFont.SetHeight(-21),this.btnAchievementGuideName.FFont.SetName("Segoe UI"),this.btnAchievementGuideName.FFont.SetStyle({}),this.btnAchievementGuideName.SetParentFont(!1),this.btnAchievementGuideName.SetShowCaption(!1),this.lblAchievementGuideName.SetParentComponent(this.btnAchievementGuideName),this.lblAchievementGuideName.SetName("lblAchievementGuideName"),this.lblAchievementGuideName.SetAlignWithMargins(!0),this.lblAchievementGuideName.SetLeft(48),this.lblAchievementGuideName.SetTop(0),this.lblAchievementGuideName.SetWidth(190),this.lblAchievementGuideName.SetHeight(32),this.lblAchievementGuideName.FMargins.SetLeft(10),this.lblAchievementGuideName.FMargins.SetTop(0),this.lblAchievementGuideName.FMargins.SetRight(10),this.lblAchievementGuideName.FMargins.SetBottom(0),this.lblAchievementGuideName.SetAlign(3),this.lblAchievementGuideName.SetCaption(""),this.lblAchievementGuideName.FFont.FCharset=1,this.lblAchievementGuideName.FFont.SetColor(16777215),this.lblAchievementGuideName.FFont.SetHeight(-19),this.lblAchievementGuideName.FFont.SetName("Segoe UI"),this.lblAchievementGuideName.FFont.SetStyle({}),this.lblAchievementGuideName.SetHeightPercent(100),this.lblAchievementGuideName.SetLayout(1),this.lblAchievementGuideName.SetParentFont(!1),this.lblAchievementGuideName.SetWidthStyle(2),this.lblAchievementGuideName.SetWidthPercent(100),this.imgAchievementImage.SetParentComponent(this.btnAchievementGuideName),this.imgAchievementImage.SetName("imgAchievementImage"),this.imgAchievementImage.SetAlignWithMargins(!0),this.imgAchievementImage.SetLeft(3),this.imgAchievementImage.SetTop(0),this.imgAchievementImage.SetWidth(32),this.imgAchievementImage.SetHeight(32),this.imgAchievementImage.FMargins.SetTop(0),this.imgAchievementImage.FMargins.SetBottom(0),this.imgAchievementImage.SetHeightPercent(100),this.imgAchievementImage.SetWidthPercent(100),this.imgAchievementImage.SetAlign(3),this.imgAchievementImage.SetChildOrderEx(2),this.imgAchievementImage.SetURL("assets/bug.svg"),this.AchievementGuideVideo.SetParentComponent(this.layAchievementGuide),this.AchievementGuideVideo.SetName("AchievementGuideVideo"),this.AchievementGuideVideo.SetAlignWithMargins(!0),this.AchievementGuideVideo.SetLeft(20),this.AchievementGuideVideo.SetTop(119),this.AchievementGuideVideo.SetWidth(1530),this.AchievementGuideVideo.SetHeight(702),this.AchievementGuideVideo.FMargins.SetLeft(20),this.AchievementGuideVideo.FMargins.SetTop(20),this.AchievementGuideVideo.FMargins.SetRight(20),this.AchievementGuideVideo.FMargins.SetBottom(20),this.AchievementGuideVideo.SetAlign(5),this.AchievementGuideVideo.SetChildOrderEx(2),this.AchievementGuideVideo.FScrollStyle=0,this.layAchievementsGrid.SetParentComponent(this.layAchievementsContainer),this.layAchievementsGrid.SetName("layAchievementsGrid"),this.layAchievementsGrid.SetLeft(0),this.layAchievementsGrid.SetTop(178),this.layAchievementsGrid.SetWidth(1570),this.layAchievementsGrid.SetHeight(841),this.layAchievementsGrid.SetAlign(5),this.layAchievementsGrid.SetChildOrderEx(1),this.layAchievementsGrid.FColumnCollection.Clear(),this.layAchievementsGrid.FColumnCollection.Add$1().SetValue(30);var e=this.layAchievementsGrid.FColumnCollection.Add$1();e.SetSizeStyle(2),e.SetValue(70),this.layAchievementsGrid.FControlCollection.Clear();var t=this.layAchievementsGrid.FControlCollection.Add$1();t.FColumn=0,t.FRow=0,t.FControl=this.layAchievementsGridLeft;var i=this.layAchievementsGrid.FControlCollection.Add$1();i.FColumn=0,i.FRow=0,i.FControl=this.layAchievementsGridRight,this.layAchievementsGrid.SetColor(-1),this.layAchievementsGrid.FGridLineColor=-1,this.layAchievementsGrid.FRowCollection.Clear(),this.layAchievementsGrid.FRowCollection.Add$1().SetValue(100),this.layAchievementsGridLeft.SetParentComponent(this.layAchievementsGrid),this.layAchievementsGridLeft.SetName("layAchievementsGridLeft"),this.layAchievementsGridLeft.SetLeft(2),this.layAchievementsGridLeft.SetTop(2),this.layAchievementsGridLeft.SetWidth(467),this.layAchievementsGridLeft.SetHeight(837),this.layAchievementsGridLeft.SetAlign(5),this.layAchievementsGridLeft.SetBorderStyle(0),this.layAchievementsGridLeft.SetColor(-1),this.layAchievementsGridLeft.SetShowCaption(!1),this.lblSearch.SetParentComponent(this.layAchievementsGridLeft),this.lblSearch.SetName("lblSearch"),this.lblSearch.SetAlignWithMargins(!0),this.lblSearch.SetLeft(20),this.lblSearch.SetTop(20),this.lblSearch.SetWidth(427),this.lblSearch.SetHeight(25),this.lblSearch.FMargins.SetLeft(20),this.lblSearch.FMargins.SetTop(20),this.lblSearch.FMargins.SetRight(20),this.lblSearch.FMargins.SetBottom(0),this.lblSearch.SetAlign(1),this.lblSearch.SetCaption("Search Criteria"),this.lblSearch.FFont.FCharset=1,this.lblSearch.FFont.SetColor(16777215),this.lblSearch.FFont.SetHeight(-19),this.lblSearch.FFont.SetName("Segoe UI"),this.lblSearch.FFont.SetStyle({}),this.lblSearch.SetHeightPercent(100),this.lblSearch.SetParentFont(!1),this.lblSearch.SetWidthPercent(100),this.WebLabel8.SetParentComponent(this.layAchievementsGridLeft),this.WebLabel8.SetName("WebLabel8"),this.WebLabel8.SetAlignWithMargins(!0),this.WebLabel8.SetLeft(20),this.WebLabel8.SetTop(175),this.WebLabel8.SetWidth(427),this.WebLabel8.SetHeight(25),this.WebLabel8.FMargins.SetLeft(20),this.WebLabel8.FMargins.SetTop(20),this.WebLabel8.FMargins.SetRight(20),this.WebLabel8.FMargins.SetBottom(0),this.WebLabel8.SetAlign(1),this.WebLabel8.SetCaption("Filter Criteria"),this.WebLabel8.FFont.FCharset=1,this.WebLabel8.FFont.SetColor(16777215),this.WebLabel8.FFont.SetHeight(-19),this.WebLabel8.FFont.SetName("Segoe UI"),this.WebLabel8.FFont.SetStyle({}),this.WebLabel8.SetHeightPercent(100),this.WebLabel8.SetParentFont(!1),this.WebLabel8.SetWidthPercent(100),this.edtSearch.SetParentComponent(this.layAchievementsGridLeft),this.edtSearch.SetName("edtSearch"),this.edtSearch.SetAlignWithMargins(!0),this.edtSearch.SetLeft(40),this.edtSearch.SetTop(65),this.edtSearch.SetWidth(407),this.edtSearch.SetHeight(40),this.edtSearch.FMargins.SetLeft(40),this.edtSearch.FMargins.SetTop(20),this.edtSearch.FMargins.SetRight(20),this.edtSearch.FMargins.SetBottom(0),this.edtSearch.SetAlign(1),this.edtSearch.SetChildOrderEx(3),this.edtSearch.FFont.FCharset=1,this.edtSearch.FFont.SetColor(65793),this.edtSearch.FFont.SetHeight(-21),this.edtSearch.FFont.SetName("Segoe UI"),this.edtSearch.FFont.SetStyle({}),this.edtSearch.SetHeightPercent(100),this.edtSearch.SetParentFont(!1),this.edtSearch.SetTextHint("Enter Achievement Name"),this.edtSearch.SetWidthPercent(100),this.btnSearch.SetParentComponent(this.layAchievementsGridLeft),this.btnSearch.SetName("btnSearch"),this.btnSearch.SetAlignWithMargins(!0),this.btnSearch.SetLeft(40),this.btnSearch.SetTop(115),this.btnSearch.SetWidth(407),this.btnSearch.SetHeight(40),this.btnSearch.SetControlCursor(21),this.btnSearch.FMargins.SetLeft(40),this.btnSearch.FMargins.SetTop(10),this.btnSearch.FMargins.SetRight(20),this.btnSearch.FMargins.SetBottom(0),this.btnSearch.SetAlign(1),this.btnSearch.SetCaption("Search"),this.btnSearch.SetColor(14120960),this.btnSearch.SetChildOrderEx(4),this.btnSearch.FFont.FCharset=1,this.btnSearch.FFont.SetColor(16777215),this.btnSearch.FFont.SetHeight(-21),this.btnSearch.FFont.SetName("Segoe UI"),this.btnSearch.FFont.SetStyle({}),this.btnSearch.SetHeightPercent(100),this.btnSearch.SetParentFont(!1),this.btnSearch.SetWidthPercent(100),this.SetEvent$1(this.btnSearch,this,"OnClick","btnSearchClick"),this.SetEvent$1(this.btnSearch,this,"OnMouseEnter","ButtonMouseEnter"),this.SetEvent$1(this.btnSearch,this,"OnMouseLeave","ButtonMouseLeave"),this.cbMultiplayer.SetParentComponent(this.layAchievementsGridLeft),this.cbMultiplayer.SetName("cbMultiplayer"),this.cbMultiplayer.SetAlignWithMargins(!0),this.cbMultiplayer.SetLeft(40),this.cbMultiplayer.SetTop(264),this.cbMultiplayer.SetWidth(407),this.cbMultiplayer.SetHeight(22),this.cbMultiplayer.FMargins.SetLeft(40),this.cbMultiplayer.FMargins.SetTop(5),this.cbMultiplayer.FMargins.SetRight(20),this.cbMultiplayer.FMargins.SetBottom(0),this.cbMultiplayer.SetAlign(1),this.cbMultiplayer.SetCaption("Multiplayer"),this.cbMultiplayer.SetChecked(!0),this.cbMultiplayer.SetChildOrderEx(4),this.cbMultiplayer.FFont.FCharset=1,this.cbMultiplayer.FFont.SetColor(16777215),this.cbMultiplayer.FFont.SetHeight(-14),this.cbMultiplayer.FFont.SetName("Segoe UI"),this.cbMultiplayer.FFont.SetStyle({}),this.cbMultiplayer.SetHeightPercent(100),this.cbMultiplayer.SetParentFont(!1),this.cbMultiplayer.SetState(0),this.cbMultiplayer.SetWidthPercent(100),this.SetEvent$1(this.cbMultiplayer,this,"OnClick","FilterChange"),this.cbCoopCampaign.SetParentComponent(this.layAchievementsGridLeft),this.cbCoopCampaign.SetName("cbCoopCampaign"),this.cbCoopCampaign.SetAlignWithMargins(!0),this.cbCoopCampaign.SetLeft(40),this.cbCoopCampaign.SetTop(237),this.cbCoopCampaign.SetWidth(407),this.cbCoopCampaign.SetHeight(22),this.cbCoopCampaign.FMargins.SetLeft(40),this.cbCoopCampaign.FMargins.SetTop(5),this.cbCoopCampaign.FMargins.SetRight(20),this.cbCoopCampaign.FMargins.SetBottom(0),this.cbCoopCampaign.SetAlign(1),this.cbCoopCampaign.SetCaption("Co-op Campaign"),this.cbCoopCampaign.SetChecked(!0),this.cbCoopCampaign.SetChildOrderEx(4),this.cbCoopCampaign.FFont.FCharset=1,this.cbCoopCampaign.FFont.SetColor(16777215),this.cbCoopCampaign.FFont.SetHeight(-14),this.cbCoopCampaign.FFont.SetName("Segoe UI"),this.cbCoopCampaign.FFont.SetStyle({}),this.cbCoopCampaign.SetHeightPercent(100),this.cbCoopCampaign.SetParentFont(!1),this.cbCoopCampaign.SetState(0),this.cbCoopCampaign.SetWidthPercent(100),this.SetEvent$1(this.cbCoopCampaign,this,"OnClick","FilterChange"),this.cbCampaign.SetParentComponent(this.layAchievementsGridLeft),this.cbCampaign.SetName("cbCampaign"),this.cbCampaign.SetAlignWithMargins(!0),this.cbCampaign.SetLeft(40),this.cbCampaign.SetTop(210),this.cbCampaign.SetWidth(407),this.cbCampaign.SetHeight(22),this.cbCampaign.FMargins.SetLeft(40),this.cbCampaign.FMargins.SetTop(10),this.cbCampaign.FMargins.SetRight(20),this.cbCampaign.FMargins.SetBottom(0),this.cbCampaign.SetAlign(1),this.cbCampaign.SetCaption("Campaign"),this.cbCampaign.SetChecked(!0),this.cbCampaign.SetChildOrderEx(4),this.cbCampaign.FFont.FCharset=1,this.cbCampaign.FFont.SetColor(16777215),this.cbCampaign.FFont.SetHeight(-14),this.cbCampaign.FFont.SetName("Segoe UI"),this.cbCampaign.FFont.SetStyle({}),this.cbCampaign.SetHeightPercent(100),this.cbCampaign.SetParentFont(!1),this.cbCampaign.SetState(0),this.cbCampaign.SetWidthPercent(100),this.SetEvent$1(this.cbCampaign,this,"OnClick","FilterChange"),this.cbOther.SetParentComponent(this.layAchievementsGridLeft),this.cbOther.SetName("cbOther"),this.cbOther.SetAlignWithMargins(!0),this.cbOther.SetLeft(40),this.cbOther.SetTop(291),this.cbOther.SetWidth(407),this.cbOther.SetHeight(22),this.cbOther.FMargins.SetLeft(40),this.cbOther.FMargins.SetTop(5),this.cbOther.FMargins.SetRight(20),this.cbOther.FMargins.SetBottom(0),this.cbOther.SetAlign(1),this.cbOther.SetCaption("Other (Not Filtered Yet)"),this.cbOther.SetChecked(!0),this.cbOther.SetChildOrderEx(4),this.cbOther.FFont.FCharset=1,this.cbOther.FFont.SetColor(16777215),this.cbOther.FFont.SetHeight(-14),this.cbOther.FFont.SetName("Segoe UI"),this.cbOther.FFont.SetStyle({}),this.cbOther.SetHeightPercent(100),this.cbOther.SetParentFont(!1),this.cbOther.SetState(0),this.cbOther.SetWidthPercent(100),this.SetEvent$1(this.cbOther,this,"OnClick","FilterChange"),this.layAchievementsGridRight.SetParentComponent(this.layAchievementsGrid),this.layAchievementsGridRight.SetName("layAchievementsGridRight"),this.layAchievementsGridRight.SetLeft(473),this.layAchievementsGridRight.SetTop(2),this.layAchievementsGridRight.SetWidth(1095),this.layAchievementsGridRight.SetHeight(837),this.layAchievementsGridRight.SetAlign(5),this.layAchievementsGridRight.SetBorderStyle(0),this.layAchievementsGridRight.SetChildOrderEx(2),this.layAchievementsGridRight.SetColor(-1),this.layAchievementsGridRight.SetShowCaption(!1),this.WebLabel10.SetParentComponent(this.layAchievementsGridRight),this.WebLabel10.SetName("WebLabel10"),this.WebLabel10.SetAlignWithMargins(!0),this.WebLabel10.SetLeft(20),this.WebLabel10.SetTop(20),this.WebLabel10.SetWidth(1055),this.WebLabel10.SetHeight(25),this.WebLabel10.FMargins.SetLeft(20),this.WebLabel10.FMargins.SetTop(20),this.WebLabel10.FMargins.SetRight(20),this.WebLabel10.FMargins.SetBottom(20),this.WebLabel10.SetAlign(1),this.WebLabel10.SetCaption("Achievements"),this.WebLabel10.FFont.FCharset=1,this.WebLabel10.FFont.SetColor(16777215),this.WebLabel10.FFont.SetHeight(-19),this.WebLabel10.FFont.SetName("Segoe UI"),this.WebLabel10.FFont.SetStyle({}),this.WebLabel10.SetHeightPercent(100),this.WebLabel10.SetParentFont(!1),this.WebLabel10.SetWidthPercent(100),this.layAchievements.SetParentComponent(this.layAchievementsGridRight),this.layAchievements.SetName("layAchievements"),this.layAchievements.SetLeft(0),this.layAchievements.SetTop(65),this.layAchievements.SetWidth(1095),this.layAchievements.SetHeight(772),this.layAchievements.SetAlign(5),this.layAchievements.SetBorderStyle(0),this.layAchievements.SetChildOrderEx(1),this.layAchievements.SetColor(-1),this.layAchievements.SetScrollBars(2),this.layAchievement0.SetParentComponent(this.layAchievements),this.layAchievement0.SetName("layAchievement0"),this.layAchievement0.SetAlignWithMargins(!0),this.layAchievement0.SetLeft(40),this.layAchievement0.SetTop(0),this.layAchievement0.SetWidth(1015),this.layAchievement0.SetHeight(100),this.layAchievement0.FMargins.SetLeft(40),this.layAchievement0.FMargins.SetTop(0),this.layAchievement0.FMargins.SetRight(40),this.layAchievement0.FMargins.SetBottom(10),this.layAchievement0.SetAlign(1),this.layAchievement0.SetBorderColor(16777215),this.layAchievement0.SetColor(2366745),this.layAchievement0.SetShowCaption(!1),this.imgAchievement0.SetParentComponent(this.layAchievement0),this.imgAchievement0.SetName("imgAchievement0"),this.imgAchievement0.SetAlignWithMargins(!0),this.imgAchievement0.SetLeft(13),this.imgAchievement0.SetTop(13),this.imgAchievement0.SetWidth(74),this.imgAchievement0.SetHeight(74),this.imgAchievement0.FMargins.SetLeft(13),this.imgAchievement0.FMargins.SetTop(13),this.imgAchievement0.FMargins.SetRight(13),this.imgAchievement0.FMargins.SetBottom(13),this.imgAchievement0.SetHeightPercent(100),this.imgAchievement0.SetWidthPercent(100),this.imgAchievement0.SetAlign(3),this.imgAchievement0.SetURL("https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/976730/295994d6837f319474877fac6036b13bcc09e7cc.jpg"),this.lblAchievementUnlocked0.SetParentComponent(this.layAchievement0),this.lblAchievementUnlocked0.SetName("lblAchievementUnlocked0"),this.lblAchievementUnlocked0.SetAlignWithMargins(!0),this.lblAchievementUnlocked0.SetLeft(801),this.lblAchievementUnlocked0.SetTop(0),this.lblAchievementUnlocked0.SetWidth(201),this.lblAchievementUnlocked0.SetHeight(100),this.lblAchievementUnlocked0.FMargins.SetLeft(0),this.lblAchievementUnlocked0.FMargins.SetTop(0),this.lblAchievementUnlocked0.FMargins.SetRight(13),this.lblAchievementUnlocked0.FMargins.SetBottom(0),this.lblAchievementUnlocked0.SetAlign(4),this.lblAchievementUnlocked0.SetCaption("Unlocked Feb 18, 2024, 7:25 PM"),this.lblAchievementUnlocked0.FFont.FCharset=1,this.lblAchievementUnlocked0.FFont.SetColor(16777215),this.lblAchievementUnlocked0.FFont.SetHeight(-14),this.lblAchievementUnlocked0.FFont.SetName("Segoe UI"),this.lblAchievementUnlocked0.FFont.SetStyle({}),this.lblAchievementUnlocked0.SetHeightPercent(100),this.lblAchievementUnlocked0.SetLayout(1),this.lblAchievementUnlocked0.SetParentFont(!1),this.lblAchievementUnlocked0.SetWidthPercent(100),this.layAchievementText0.SetParentComponent(this.layAchievement0),this.layAchievementText0.SetName("layAchievementText0"),this.layAchievementText0.SetAlignWithMargins(!0),this.layAchievementText0.SetLeft(100),this.layAchievementText0.SetTop(13),this.layAchievementText0.SetWidth(701),this.layAchievementText0.SetHeight(74),this.layAchievementText0.FMargins.SetLeft(0),this.layAchievementText0.FMargins.SetTop(13),this.layAchievementText0.FMargins.SetRight(0),this.layAchievementText0.FMargins.SetBottom(13),this.layAchievementText0.SetAlign(5),this.layAchievementText0.SetBorderStyle(0),this.layAchievementText0.SetChildOrderEx(1),this.layAchievementText0.SetColor(-1),this.layAchievementText0.FPadding.SetTop(4),this.layAchievementText0.FPadding.SetBottom(6),this.layAchievementText0.SetShowCaption(!1),this.lblAchievementPercent0.SetParentComponent(this.layAchievementText0),this.lblAchievementPercent0.SetName("lblAchievementPercent0"),this.lblAchievementPercent0.SetLeft(0),this.lblAchievementPercent0.SetTop(49),this.lblAchievementPercent0.SetWidth(701),this.lblAchievementPercent0.SetHeight(19),this.lblAchievementPercent0.FMargins.SetLeft(0),this.lblAchievementPercent0.FMargins.SetTop(0),this.lblAchievementPercent0.FMargins.SetRight(0),this.lblAchievementPercent0.FMargins.SetBottom(0),this.lblAchievementPercent0.SetAlign(2),this.lblAchievementPercent0.SetCaption("79.9% of players have this achievement"),this.lblAchievementPercent0.FFont.FCharset=1,this.lblAchievementPercent0.FFont.SetColor(16777215),this.lblAchievementPercent0.FFont.SetHeight(-14),this.lblAchievementPercent0.FFont.SetName("Segoe UI"),this.lblAchievementPercent0.FFont.SetStyle({}),this.lblAchievementPercent0.SetHeightPercent(100),this.lblAchievementPercent0.SetParentFont(!1),this.lblAchievementPercent0.SetWidthPercent(100),this.lblAchievementDescription0.SetParentComponent(this.layAchievementText0),this.lblAchievementDescription0.SetName("lblAchievementDescription0"),this.lblAchievementDescription0.SetLeft(0),this.lblAchievementDescription0.SetTop(29),this.lblAchievementDescription0.SetWidth(701),this.lblAchievementDescription0.SetHeight(20),this.lblAchievementDescription0.FMargins.SetLeft(0),this.lblAchievementDescription0.FMargins.SetTop(0),this.lblAchievementDescription0.FMargins.SetRight(0),this.lblAchievementDescription0.FMargins.SetBottom(0),this.lblAchievementDescription0.SetAlign(5),this.lblAchievementDescription0.SetCaption("Kill 100 enemies or players."),this.lblAchievementDescription0.FFont.FCharset=1,this.lblAchievementDescription0.FFont.SetColor(16777215),this.lblAchievementDescription0.FFont.SetHeight(-14),this.lblAchievementDescription0.FFont.SetName("Segoe UI"),this.lblAchievementDescription0.FFont.SetStyle({}),this.lblAchievementDescription0.SetHeightPercent(100),this.lblAchievementDescription0.SetLayout(1),this.lblAchievementDescription0.SetParentFont(!1),this.lblAchievementDescription0.SetWidthPercent(100),this.lblAchievementName0.SetParentComponent(this.layAchievementText0),this.lblAchievementName0.SetName("lblAchievementName0"),this.lblAchievementName0.SetLeft(0),this.lblAchievementName0.SetTop(4),this.lblAchievementName0.SetWidth(701),this.lblAchievementName0.SetHeight(25),this.lblAchievementName0.FMargins.SetLeft(0),this.lblAchievementName0.FMargins.SetTop(0),this.lblAchievementName0.FMargins.SetRight(0),this.lblAchievementName0.FMargins.SetBottom(0),this.lblAchievementName0.SetAlign(1),this.lblAchievementName0.SetCaption("Just Getting Started"),this.lblAchievementName0.FFont.FCharset=1,this.lblAchievementName0.FFont.SetColor(16777215),this.lblAchievementName0.FFont.SetHeight(-19),this.lblAchievementName0.FFont.SetName("Segoe UI"),this.lblAchievementName0.FFont.SetStyle({}),this.lblAchievementName0.SetHeightPercent(100),this.lblAchievementName0.SetParentFont(!1),this.lblAchievementName0.SetWidthPercent(100),this.layGame.SetParentComponent(this.layAchievementsContainer),this.layGame.SetName("layGame"),this.layGame.SetAlignWithMargins(!0),this.layGame.SetLeft(10),this.layGame.SetTop(10),this.layGame.SetWidth(1550),this.layGame.SetHeight(78),this.layGame.FMargins.SetLeft(10),this.layGame.FMargins.SetTop(10),this.layGame.FMargins.SetRight(10),this.layGame.FMargins.SetBottom(0),this.layGame.SetAlign(1),this.layGame.SetBorderColor(16777215),this.layGame.SetBorderStyle(0),this.layGame.SetChildOrderEx(1),this.layGame.SetColor(-1),this.layGame.SetShowCaption(!1),this.imgGameLogo.SetParentComponent(this.layGame),this.imgGameLogo.SetName("imgGameLogo"),this.imgGameLogo.SetAlignWithMargins(!0),this.imgGameLogo.SetLeft(6),this.imgGameLogo.SetTop(6),this.imgGameLogo.SetWidth(66),this.imgGameLogo.SetHeight(66),this.imgGameLogo.FMargins.SetLeft(6),this.imgGameLogo.FMargins.SetTop(6),this.imgGameLogo.FMargins.SetRight(6),this.imgGameLogo.FMargins.SetBottom(6),this.imgGameLogo.SetHeightPercent(100),this.imgGameLogo.SetWidthPercent(100),this.imgGameLogo.SetAlign(3),this.imgGameLogo.SetURL("assets/halo-mcc.png"),this.lblGameName.SetParentComponent(this.layGame),this.lblGameName.SetName("lblGameName"),this.lblGameName.SetAlignWithMargins(!0),this.lblGameName.SetLeft(78),this.lblGameName.SetTop(0),this.lblGameName.SetWidth(1007),this.lblGameName.SetHeight(78),this.lblGameName.FMargins.SetLeft(0),this.lblGameName.FMargins.SetTop(0),this.lblGameName.FMargins.SetRight(13),this.lblGameName.FMargins.SetBottom(0),this.lblGameName.SetAlign(5),this.lblGameName.SetCaption("Halo: The Master Chief Collection"),this.lblGameName.FFont.FCharset=1,this.lblGameName.FFont.SetColor(16777215),this.lblGameName.FFont.SetHeight(-23),this.lblGameName.FFont.SetName("Segoe UI"),this.lblGameName.FFont.SetStyle({}),this.lblGameName.SetHeightPercent(100),this.lblGameName.SetLayout(1),this.lblGameName.SetParentFont(!1),this.lblGameName.SetWidthPercent(100),this.edtCompare.SetParentComponent(this.layGame),this.edtCompare.SetName("edtCompare"),this.edtCompare.SetAlignWithMargins(!0),this.edtCompare.SetLeft(1098),this.edtCompare.SetTop(19),this.edtCompare.SetWidth(300),this.edtCompare.SetHeight(40),this.edtCompare.FMargins.SetLeft(0),this.edtCompare.FMargins.SetTop(19),this.edtCompare.FMargins.SetRight(10),this.edtCompare.FMargins.SetBottom(19),this.edtCompare.SetAlign(4),this.edtCompare.SetChildOrderEx(3),this.edtCompare.FFont.FCharset=1,this.edtCompare.FFont.SetColor(65793),this.edtCompare.FFont.SetHeight(-21),this.edtCompare.FFont.SetName("Segoe UI"),this.edtCompare.FFont.SetStyle({}),this.edtCompare.SetHeightPercent(100),this.edtCompare.SetParentFont(!1),this.edtCompare.SetTextHint("Enter Xbox LIVE Gamertag"),this.edtCompare.SetWidthPercent(100),this.btnCompare.SetParentComponent(this.layGame),this.btnCompare.SetName("btnCompare"),this.btnCompare.SetAlignWithMargins(!0),this.btnCompare.SetLeft(1408),this.btnCompare.SetTop(19),this.btnCompare.SetWidth(122),this.btnCompare.SetHeight(40),this.btnCompare.SetControlCursor(21),this.btnCompare.FMargins.SetLeft(0),this.btnCompare.FMargins.SetTop(19),this.btnCompare.FMargins.SetRight(20),this.btnCompare.FMargins.SetBottom(19),this.btnCompare.SetAlign(4),this.btnCompare.SetCaption("Compare"),this.btnCompare.SetColor(14120960),this.btnCompare.SetChildOrderEx(4),this.btnCompare.FFont.FCharset=1,this.btnCompare.FFont.SetColor(16777215),this.btnCompare.FFont.SetHeight(-21),this.btnCompare.FFont.SetName("Segoe UI"),this.btnCompare.FFont.SetStyle({}),this.btnCompare.SetHeightPercent(100),this.btnCompare.SetParentFont(!1),this.btnCompare.SetWidthPercent(100),this.SetEvent$1(this.btnCompare,this,"OnMouseEnter","ButtonMouseEnter"),this.SetEvent$1(this.btnCompare,this,"OnMouseLeave","ButtonMouseLeave"),this.layAchievementsEarned.SetParentComponent(this.layAchievementsContainer),this.layAchievementsEarned.SetName("layAchievementsEarned"),this.layAchievementsEarned.SetAlignWithMargins(!0),this.layAchievementsEarned.SetLeft(10),this.layAchievementsEarned.SetTop(98),this.layAchievementsEarned.SetWidth(1550),this.layAchievementsEarned.SetHeight(80),this.layAchievementsEarned.FMargins.SetLeft(10),this.layAchievementsEarned.FMargins.SetTop(10),this.layAchievementsEarned.FMargins.SetRight(10),this.layAchievementsEarned.FMargins.SetBottom(0),this.layAchievementsEarned.SetAlign(1),this.layAchievementsEarned.SetBorderColor(16777215),this.layAchievementsEarned.SetChildOrderEx(2),this.layAchievementsEarned.SetColor(2366745),this.layAchievementsEarned.FPadding.SetLeft(13),this.layAchievementsEarned.FPadding.SetTop(13),this.layAchievementsEarned.FPadding.SetRight(13),this.layAchievementsEarned.FPadding.SetBottom(13),this.layAchievementsEarned.SetShowCaption(!1),this.pbAchievementsEarned.SetParentComponent(this.layAchievementsEarned),this.pbAchievementsEarned.SetName("pbAchievementsEarned"),this.pbAchievementsEarned.SetAlignWithMargins(!0),this.pbAchievementsEarned.SetLeft(13),this.pbAchievementsEarned.SetTop(43),this.pbAchievementsEarned.SetWidth(1524),this.pbAchievementsEarned.SetHeight(24),this.pbAchievementsEarned.FMargins.SetLeft(0),this.pbAchievementsEarned.FMargins.SetTop(0),this.pbAchievementsEarned.FMargins.SetRight(0),this.pbAchievementsEarned.FMargins.SetBottom(0),this.pbAchievementsEarned.SetAlign(2),this.pbAchievementsEarned.SetChildOrderEx(2),this.pbAchievementsEarned.SetMax(700),this.pbAchievementsEarned.SetValueColor(14120960),this.WebGridPanel1.SetParentComponent(this.layAchievementsEarned),this.WebGridPanel1.SetName("WebGridPanel1"),this.WebGridPanel1.SetLeft(13),this.WebGridPanel1.SetTop(13),this.WebGridPanel1.SetWidth(1524),this.WebGridPanel1.SetHeight(30),this.WebGridPanel1.SetAlign(5),this.WebGridPanel1.SetChildOrderEx(2),this.WebGridPanel1.FColumnCollection.Clear(),this.WebGridPanel1.FColumnCollection.Add$1().SetValue(50),this.WebGridPanel1.FColumnCollection.Add$1().SetValue(50),this.WebGridPanel1.FControlCollection.Clear();var a=this.WebGridPanel1.FControlCollection.Add$1();a.FColumn=0,a.FRow=0,a.FControl=this.lblAchievementsEarned;var n=this.WebGridPanel1.FControlCollection.Add$1();n.FColumn=0,n.FRow=0,n.FControl=this.lblAchievementProgressPercent,this.WebGridPanel1.SetColor(-1),this.WebGridPanel1.FGridLineColor=0,this.WebGridPanel1.FRowCollection.Clear(),this.WebGridPanel1.FRowCollection.Add$1().SetValue(100),this.lblAchievementsEarned.SetParentComponent(this.WebGridPanel1),this.lblAchievementsEarned.SetName("lblAchievementsEarned"),this.lblAchievementsEarned.SetLeft(2),this.lblAchievementsEarned.SetTop(2),this.lblAchievementsEarned.SetWidth(758),this.lblAchievementsEarned.SetHeight(26),this.lblAchievementsEarned.FMargins.SetLeft(0),this.lblAchievementsEarned.FMargins.SetTop(0),this.lblAchievementsEarned.FMargins.SetRight(0),this.lblAchievementsEarned.FMargins.SetBottom(0),this.lblAchievementsEarned.SetAlign(5),this.lblAchievementsEarned.SetCaption("230 OF 700 ACHIEVEMENTS EARNED"),this.lblAchievementsEarned.SetColorEx(-1),this.lblAchievementsEarned.FFont.FCharset=1,this.lblAchievementsEarned.FFont.SetColor(16777215),this.lblAchievementsEarned.FFont.SetHeight(-19),this.lblAchievementsEarned.FFont.SetName("Segoe UI"),this.lblAchievementsEarned.FFont.SetStyle({}),this.lblAchievementsEarned.SetHeightPercent(100),this.lblAchievementsEarned.SetLayout(1),this.lblAchievementsEarned.SetParentFont(!1),this.lblAchievementsEarned.SetWidthPercent(100),this.lblAchievementProgressPercent.SetParentComponent(this.WebGridPanel1),this.lblAchievementProgressPercent.SetName("lblAchievementProgressPercent"),this.lblAchievementProgressPercent.SetLeft(764),this.lblAchievementProgressPercent.SetTop(2),this.lblAchievementProgressPercent.SetWidth(758),this.lblAchievementProgressPercent.SetHeight(26),this.lblAchievementProgressPercent.FMargins.SetLeft(0),this.lblAchievementProgressPercent.FMargins.SetTop(0),this.lblAchievementProgressPercent.FMargins.SetRight(0),this.lblAchievementProgressPercent.FMargins.SetBottom(0),this.lblAchievementProgressPercent.SetAlign(5),this.lblAchievementProgressPercent.SetAlignment(1),this.lblAchievementProgressPercent.SetCaption("(0%)"),this.lblAchievementProgressPercent.SetColorEx(-1),this.lblAchievementProgressPercent.FFont.FCharset=1,this.lblAchievementProgressPercent.FFont.SetColor(16777215),this.lblAchievementProgressPercent.FFont.SetHeight(-19),this.lblAchievementProgressPercent.FFont.SetName("Segoe UI"),this.lblAchievementProgressPercent.FFont.SetStyle({}),this.lblAchievementProgressPercent.SetHeightPercent(100),this.lblAchievementProgressPercent.SetLayout(1),this.lblAchievementProgressPercent.SetParentFont(!1),this.lblAchievementProgressPercent.SetWidthPercent(100),this.GetAchievementsHaloInfinite.SetParentComponent(this),this.GetAchievementsHaloInfinite.SetName("GetAchievementsHaloInfinite"),this.GetAchievementsHaloInfinite.FCustomCommand="{ mode: 'no-cors' }",this.GetAchievementsHaloInfinite.FURL="https://steamcommunity.com/stats/1240440/achievements",this.GetAchievementsHaloInfinite.SetLeft(752),this.GetAchievementsHaloInfinite.SetTop(64)}finally{this.layAchievementsContainer.AfterLoadDFMValues(),this.layAchievementGuide.AfterLoadDFMValues(),this.lblAchievementGuideDescription.AfterLoadDFMValues(),this.WebPanel1.AfterLoadDFMValues(),this.WebLabel1.AfterLoadDFMValues(),this.btnAchievementGuideAll.AfterLoadDFMValues(),this.lblAchievementGuideAll.AfterLoadDFMValues(),this.btnAchievementGuideName.AfterLoadDFMValues(),this.lblAchievementGuideName.AfterLoadDFMValues(),this.imgAchievementImage.AfterLoadDFMValues(),this.AchievementGuideVideo.AfterLoadDFMValues(),this.layAchievementsGrid.AfterLoadDFMValues(),this.layAchievementsGridLeft.AfterLoadDFMValues(),this.lblSearch.AfterLoadDFMValues(),this.WebLabel8.AfterLoadDFMValues(),this.edtSearch.AfterLoadDFMValues(),this.btnSearch.AfterLoadDFMValues(),this.cbMultiplayer.AfterLoadDFMValues(),this.cbCoopCampaign.AfterLoadDFMValues(),this.cbCampaign.AfterLoadDFMValues(),this.cbOther.AfterLoadDFMValues(),this.layAchievementsGridRight.AfterLoadDFMValues(),this.WebLabel10.AfterLoadDFMValues(),this.layAchievements.AfterLoadDFMValues(),this.layAchievement0.AfterLoadDFMValues(),this.imgAchievement0.AfterLoadDFMValues(),this.lblAchievementUnlocked0.AfterLoadDFMValues(),this.layAchievementText0.AfterLoadDFMValues(),this.lblAchievementPercent0.AfterLoadDFMValues(),this.lblAchievementDescription0.AfterLoadDFMValues(),this.lblAchievementName0.AfterLoadDFMValues(),this.layGame.AfterLoadDFMValues(),this.imgGameLogo.AfterLoadDFMValues(),this.lblGameName.AfterLoadDFMValues(),this.edtCompare.AfterLoadDFMValues(),this.btnCompare.AfterLoadDFMValues(),this.layAchievementsEarned.AfterLoadDFMValues(),this.pbAchievementsEarned.AfterLoadDFMValues(),this.WebGridPanel1.AfterLoadDFMValues(),this.lblAchievementsEarned.AfterLoadDFMValues(),this.lblAchievementProgressPercent.AfterLoadDFMValues(),this.GetAchievementsHaloInfinite.AfterLoadDFMValues()}};var e=this.$rtti;e.addField("layAchievementsContainer",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("layAchievementsGrid",pas["WEBLib.ExtCtrls"].$rtti.TGridPanel),e.addField("layAchievementsGridLeft",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("layAchievements",pas["WEBLib.ExtCtrls"].$rtti.TScrollBox),e.addField("layAchievement0",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("imgAchievement0",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("layAchievementText0",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblAchievementPercent0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementDescription0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementName0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementUnlocked0",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("layGame",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("imgGameLogo",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addField("lblGameName",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("layAchievementsEarned",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("pbAchievementsEarned",pas["WEBLib.ComCtrls"].$rtti.TProgressBar),e.addField("WebGridPanel1",pas["WEBLib.ExtCtrls"].$rtti.TGridPanel),e.addField("lblAchievementsEarned",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementProgressPercent",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("edtCompare",pas["WEBLib.StdCtrls"].$rtti.TEdit),e.addField("btnCompare",pas["WEBLib.StdCtrls"].$rtti.TButton),e.addField("edtSearch",pas["WEBLib.StdCtrls"].$rtti.TEdit),e.addField("btnSearch",pas["WEBLib.StdCtrls"].$rtti.TButton),e.addField("lblSearch",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("WebLabel8",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("cbMultiplayer",pas["WEBLib.StdCtrls"].$rtti.TCheckBox),e.addField("cbCoopCampaign",pas["WEBLib.StdCtrls"].$rtti.TCheckBox),e.addField("cbCampaign",pas["WEBLib.StdCtrls"].$rtti.TCheckBox),e.addField("WebLabel10",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("layAchievementsGridRight",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("GetAchievementsHaloInfinite",pas["WEBLib.REST"].$rtti.THttpRequest),e.addField("cbOther",pas["WEBLib.StdCtrls"].$rtti.TCheckBox),e.addField("layAchievementGuide",pas["WEBLib.ExtCtrls"].$rtti.TScrollBox),e.addField("WebPanel1",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("WebLabel1",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("lblAchievementGuideDescription",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("AchievementGuideVideo",pas["WEBLib.ExtCtrls"].$rtti.THTMLContainer),e.addField("btnAchievementGuideAll",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblAchievementGuideAll",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("btnAchievementGuideName",pas["WEBLib.ExtCtrls"].$rtti.TPanel),e.addField("lblAchievementGuideName",pas["WEBLib.StdCtrls"].$rtti.TLabel),e.addField("imgAchievementImage",pas["WEBLib.ExtCtrls"].$rtti.TImageControl),e.addMethod("WebFrameResize",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("WebButton1Click",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("ButtonMouseEnter",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("ButtonMouseLeave",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnSearchClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("FilterChange",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("btnAchievementGuideAllClick",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("LinkMouseEnter",0,[["Sender",pas.System.$rtti.TObject]]),e.addMethod("LinkMouseLeave",0,[["Sender",pas.System.$rtti.TObject]])}))})),rtl.module("uIndex",["System","SysUtils","Classes","JS","Web","WEBLib.Graphics","WEBLib.Controls","WEBLib.Forms","WEBLib.Dialogs","WEBLib.Controls","WEBLib.ExtCtrls","WEBLib.StdCtrls","WEBLib.StdCtrls","WEBLib.ComCtrls","WEBLib.REST","WEBLib.WebTools","uCookies","uColors","uUtilities","u404PageNotFound","uSettings","uSearch","uAchievements"],(function(){"use strict";rtl.createClass(this,"TfrmMain",pas["WEBLib.Forms"].TForm,(function(){this.$init=function(){pas["WEBLib.Forms"].TForm.$init.call(this),this.BackgroundVideo=null,this.GetAchievements=null,this.layBody=null,this.layHeader=null,this.WebLabel2=null,this.edtSearch=null,this.btnSearch=null,this.WebPanel9=null,this.layNavSearch=null,this.btnNavSearch=null,this.lblNavSearch=null,this.MultiView=null,this.imgNavSearch=null,this.layNavSettings=null,this.btnNavSettings=null,this.lblNavSettings=null,this.imgNavSettings=null,this.LayoutContainer=null,this.layNavAchievements=null,this.layNavExpandCollapseAchievements=null,this.btnNavExpandCollapseAchievements=null,this.lblNavExpandCollapseAchievements=null,this.imgNavExpandCollapseAchievements=null,this.imgNavExpandCollapseIconAchievements=null,this.layNavHalo5=null,this.btnNavHalo5=null,this.lblNavHalo5=null,this.imgNavHalo5=null,this.layNavHaloReach=null,this.btnNavHaloReach=null,this.lblNavHaloReach=null,this.imgNavHaloReach=null,this.layNavHaloMCC=null,this.btnNavHaloMCC=null,this.lblNavHaloMCC=null,this.imgNavHaloMCC=null,this.layNavHalo4=null,this.btnNavHalo4=null,this.lblNavHalo4=null,this.imgNavHalo4=null,this.layNavHalo3ODST=null,this.btnNavHalo3ODST=null,this.lblNavHalo3ODST=null,this.imgNavHalo3ODST=null,this.layNavHalo3=null,this.btnNavHalo3=null,this.lblNavHalo3=null,this.imgNavHalo3=null,this.layNavHalo2=null,this.btnNavHalo2=null,this.lblNavHalo2=null,this.imgNavHalo2=null,this.layNavHaloCE=null,this.btnNavHaloCE=null,this.lblNavHaloCE=null,this.imgNavHaloCE=null,this.layNavHaloInfinite=null,this.btnNavHaloInfinite=null,this.lblNavHaloInfinite=null,this.imgNavHaloInfinite=null,this.MultiViewSplitter=null,this.GetAchievementsHaloInfinite=null,this.MultiViewContainer=null,this.WebHttpRequest1=null,this.btnProfile=null,this.WebImageControl1=null,this.lblProfile=null,this.btnMultiView=null,this.layProfileDropDown=null,this.layNavSignOut=null,this.btnNavSignOut=null,this.lblNavSignOut=null,this.imgNavSignOut=null,this.layNavProfile=null,this.btnNavProfile=null,this.lblNavProfile=null,this.imgNavProfile=null,this.MultiViewWidth=0},this.$final=function(){this.BackgroundVideo=void 0,this.GetAchievements=void 0,this.layBody=void 0,this.layHeader=void 0,this.WebLabel2=void 0,this.edtSearch=void 0,this.btnSearch=void 0,this.WebPanel9=void 0,this.layNavSearch=void 0,this.btnNavSearch=void 0,this.lblNavSearch=void 0,this.MultiView=void 0,this.imgNavSearch=void 0,this.layNavSettings=void 0,this.btnNavSettings=void 0,this.lblNavSettings=void 0,this.imgNavSettings=void 0,this.LayoutContainer=void 0,this.layNavAchievements=void 0,this.layNavExpandCollapseAchievements=void 0,this.btnNavExpandCollapseAchievements=void 0,this.lblNavExpandCollapseAchievements=void 0,this.imgNavExpandCollapseAchievements=void 0,this.imgNavExpandCollapseIconAchievements=void 0,this.layNavHalo5=void 0,this.btnNavHalo5=void 0,this.lblNavHalo5=void 0,this.imgNavHalo5=void 0,this.layNavHaloReach=void 0,this.btnNavHaloReach=void 0,this.lblNavHaloReach=void 0,this.imgNavHaloReach=void 0,this.layNavHaloMCC=void 0,this.btnNavHaloMCC=void 0,this.lblNavHaloMCC=void 0,this.imgNavHaloMCC=void 0,this.layNavHalo4=void 0,this.btnNavHalo4=void 0,this.lblNavHalo4=void 0,this.imgNavHalo4=void 0,this.layNavHalo3ODST=void 0,this.btnNavHalo3ODST=void 0,this.lblNavHalo3ODST=void 0,this.imgNavHalo3ODST=void 0,this.layNavHalo3=void 0,this.btnNavHalo3=void 0,this.lblNavHalo3=void 0,this.imgNavHalo3=void 0,this.layNavHalo2=void 0,this.btnNavHalo2=void 0,this.lblNavHalo2=void 0,this.imgNavHalo2=void 0,this.layNavHaloCE=void 0,this.btnNavHaloCE=void 0,this.lblNavHaloCE=void 0,this.imgNavHaloCE=void 0,this.layNavHaloInfinite=void 0,this.btnNavHaloInfinite=void 0,this.lblNavHaloInfinite=void 0,this.imgNavHaloInfinite=void 0,this.MultiViewSplitter=void 0,this.GetAchievementsHaloInfinite=void 0,this.MultiViewContainer=void 0,this.WebHttpRequest1=void 0,this.btnProfile=void 0,this.WebImageControl1=void 0,this.lblProfile=void 0,this.btnMultiView=void 0,this.layProfileDropDown=void 0,this.layNavSignOut=void 0,this.btnNavSignOut=void 0,this.lblNavSignOut=void 0,this.imgNavSignOut=void 0,this.layNavProfile=void 0,this.btnNavProfile=void 0,this.lblNavProfile=void 0,this.imgNavProfile=void 0,pas["WEBLib.Forms"].TForm.$final.call(this)},this.WebFormCreate=function(e){document.body.insertAdjacentHTML("beforeend",'